深入学习java源码之lambda表达式与函数式接口
@FunctionalInterface JDK中的函数式接口举例 java.lang.Runnable, java.awt.event.ActionListener, java.util.Comparator, java.util.concurrent.Callable java.util.function包下的接口,如Consumer、Predicate、Supplier等 所谓的函数式接口,当然首先是一个接口,然后就是在这个接口里面只能有一个抽象方法。 加不加@FunctionalInterface对于接口是不是函数式接口没有影响,该注解知识提醒编译器去检查该接口是否仅包含一个抽象方法 主要用在Lambda表达式和方法引用(实际上也可认为是Lambda表达式)上。 如定义了一个函数式接口如下:
@FunctionalInterface
interface GreetingService
{
void sayMessage(String message);
}
那么就可以使用Lambda表达式来表示该接口的一个实现(注:JAVA 8 之前一般是用匿名类实现的):
GreetingService greetService1 = message -> System.out.println("Hello " + message);
Consumer< T>接口接受一个T类型参数,没有返回值。
package java.util.function;
import java.util.Objects;
@FunctionalInterface
public interface Consumer {
void accept(T t);
default Consumer andThen(Consumer
关注
打赏