java8_方法引用、构造器引用、数组引用
方法引用
- 若Lambda 体中的内容有方法已经实现了,我们可以使用“方法引用”(可以理解为方法引用是Lambda)表达式的另一种表现形式。
- 主要有三种语法格式
- 对象 :: 实例方法名
- 类 :: 静态方法名
- 类 :: 实例方法名
- 注意
- Lambda 体中调用方法的参数列表与返回值类型,要与函数式接口抽象方法的该函数列表和返回值类型保持一致。
- 若Lambda参数列表中的第一个参数是实例方法的调用者,而第二个参数是实例方法的参数时。可以使用 ClassName :: method
- 对象 :: 实例方法名
@Test
public void test() {
Consumer<String> consumer1 = (x) -> System.out.println(x);
consumer1.accept("hello");
Consumer<String> consumer2 = System.out::println;
consumer2.accept("world");
}
- 类 :: 静态方法名
@Test
public void test() {
Comparator<Integer> com1 = (x,y)->Integer.compare(x,y);
Comparator<Integer> com2 = Integer::compare;
}
- 类 :: 实例方法名
@Test
public void test() {
BiPredicate<String,String> bp1 = (x,y) -> x.equals(y);
BiPredicate<String,String> bp2 = String::equals;
}
构造器引用
- 格式:ClassName::new
- 注意:需要调用的构造器的参数列表要与hans
@Test
public void test09() {
Supplier<String> sup1 = () -> new String();
Supplier<String> sup2 = String :: new;
}
数组引用
- 格式:Type []::new
@Test
public void test10() {
Function<Integer,String[]> fun1 = (x) -> new String[x];
Function<Integer,String[]> fun2 = String[]::new;
}
后学末进,才疏学浅,如有疏误,还望不吝赐教。