您的位置:首页 > 编程语言 > Java开发

Java8 Lambda - Functioanl Interface 函数式接口

2016-10-04 23:46 435 查看
在java 8 里面新增了functional interface 这个概念。并且添加了新的annotation @FunctionalInterfaceI

1 什么是functional interface 函数式接口了?
functional interface : functional interface only have 1 abstract method。 这就是函数接口的定义。简单明白,函数接口其实就是一个抽象方法的接口(interface).

2 函数式接口的类型
这里我只介绍基本的几个类型Predicate<T>,Consumer<T>,Function<T, R>,Supplier<T>
这些函数式声明在java.util.function这个包里面, 大家可以自己去看一下代码。

1 Predicate<T>——接收T(generics)泛型对象并返回boolean
boolean test (T t);
常用于判断, 例如stream.filter(Predicate<T>)

2 Consumer<T>——接收Tgenerics)泛型对象,不返回值
void accept(T t)
用于作为consumer 例如forEach(Consumer<T>)

3 Function<T, R>——接收Tgenerics)泛型对象,返回R(generics)泛型对象
T -> R
R apply(T t)
例子 stream.map(Function<T, R>)

4 Supplier<T>——提供Tgenerics)泛型对象(例如工厂),不接收值
() -> T

3. 细节注意
函数式接口里面不是只允许一个方法, 因为java 8 新添加了默认方法。所以函数式接口也是可以有多个*(default method)默认方法。但是函数式接口只能有一个抽象方法(abstract method)。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  functional interface