Java8 函数式编程详解(2)

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注解来帮助我们标识函数式接口。另外需要注意的是函数式接口的目的是对某一个行为进行封装,某些接口可能只是巧合符合函数式接口的定义。

如图1-3所示,为java8的Function包的结构(即新引入的函数式接口),图中绿色表示主要引入的新接口,其他接口基本上都是为了支持基本类型而添加的接口,方法的具体作用图中有具体说明。

Java8 函数式编程详解

图1-3

自定义函数式接口支持Lambda表达式

看下如下代码,最终输出应该是两行"Hello World!",是不是很神奇?

public class Main { public static void main(String[] args) { Action action = System.out :: println; action.execute("Hello World!"); test(System.out :: println, "Hello World!"); } static void test(Action action, String str) { action.execute(str); } } @FunctionalInterface interface Action<T> { public void execute(T t); } 小结

本文对Lambda以及函数式接口进行了简要介绍,目的是激发大家使用Lambda的兴趣,步入函数式编程的大门。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/479134ba78c4b83a900c50a7e83ef178.html