本文关键词:Java 8, 函数式接口,lambda 。
源码:
@Documented
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.TYPE)
public @interface FunctionalInterface {}
说明:
根据源码注释,
函数式接口条件:
函数式接口的实例,可以用于 lambda 表达式、函数引用、构造器引用。
定义函数式接口如下:
@FunctionalInterface
public interface IProcessor<T> {
void process(T t);
}
Java 8 之前的写法:
public class Main {
public static void main(String[] args) {
IProcessor<Long> processor = new IProcessor<Long>() {
@Override
public void process(Long aLong) {
System.out.println(aLong);
}
};
processor.process(123L);
}
}
使用 Java 8 的 lambda 写法:
public class Main {
public static void main(String[] args) {
IProcessor<Long> processor = aLong -> {
System.out.println(aLong);
};
processor.process(123L);
}
}
使用 lambda + 函数引用:
public class Main {
public static void main(String[] args) {
IProcessor<Long> processor = System.out::println;
processor.process(123L);
}
}
( 本文完 )