函数式接口
所谓函数式接口,就是接口中有且只能有一个抽象方法。用@FunctionalInterface注解标注,接口可以包含多个默认方法、类方法,私有方法。
方法引用
如果Lambda 表达式的代码块只有一条代码,还可以在代码块中使用方法引用和构造器引用。 方法引用和构造器引用可以让 Lambda表达式的代码块更加简洁。方法引用和构造器引用都需要使用两个英文冒号。
类方法引用
import java.util.function.Function; /*** 本示例演示方法引用*/ public class StaticMethodRef {public static void main(String[] args) {//将String.valueOf()方法当做了函数式接口中抽象方法的实现Function<Integer,String> function = String::valueOf;System.out.println(function.apply(100));} }
实例方法引用
package cn.bytecollege.ref; import java.util.function.Function; /*** 本示例演示方法引用*/ public class InstanceMethodRef {public static void main(String[] args) {Function<Integer,String> function = integer -> {return integer.toString();};//Object的toString()充当了抽象方法的实现function = Object::toString;} }
构造器引用
package cn.bytecollege.ref; import java.util.function.Supplier; public class ConstructorMethodRef {public static void main(String[] args) {Supplier<StringBuilder> supplier = ()->{return new StringBuilder();};//引用了String的构造器supplier = StringBuilder::new;} }