Java 函数式接口

Java8中新定义了一种接口类型,即函数式接口,与其他接口的区别就是:

  • 函数式接口中只能有一个抽象方法(不包括与Object的方法重名的方法);
  • 可以有从Object继承过来的抽象方法,因为所有类的最终父类都是Object;
  • 接口中唯一抽象方法的命名并不重要,因为函数式接口就是对某一行为进行抽象,主要目的就是支持Lambda表达式。

Java8之前已经存在的函数式接口有:

  • java.lang.Runnable
  • java.util.concurrent.Callable
  • java.security.PrivilegedAction
  • java.util.Comparator
  • java.io.FileFilter
  • java.nio.file.PathMatcher
  • java.lang.reflect.InvocationHandler
  • java.beans.PropertyChangeListener
  • java.awt.event.ActionListener
  • javax.swing.event.ChangeListener

另外,Java8还提供了 @FunctionalInterface 注解来帮助我们标识函数式接口。另外需要注意的是函数式接口的目的是对某一个行为进行封装,某些接口可能只是巧合符合函数式接口的定义。

© 2016 - 2024 chengxuzhixin.com All Rights Reserved.

浙ICP备2021034854号-1    浙公网安备 33011002016107号