码迷,mamicode.com
首页 > 编程语言 > 详细

Java8 Lambda - Functioanl Interface 函数式接口

时间:2016-10-06 01:07:55      阅读:192      评论:0      收藏:0      [点我收藏+]

标签:functional interface 函数式接口 java 8

在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)。

本文出自 “Development” 博客,请务必保留此出处http://jamesdev.blog.51cto.com/2066624/1858763

Java8 Lambda - Functioanl Interface 函数式接口

标签:functional interface 函数式接口 java 8

原文地址:http://jamesdev.blog.51cto.com/2066624/1858763

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!