- 方法引用为lambda的另外一种表现形式,其为:若lambda体的内容中已有方法实现了,我们可以对其使用“方法有引用”,其有三种形式:
1: 对象:实例:方法名
2: 类::静态方法名
3:类实例方法名
第一种形式 实例:方法名
@Test
public void test1(){
//形式1 对象::实例方法
Consumer<Integer> con = (x) ->System.out.println(x);
con.accept(100);
Consumer<Integer> con1 = System.out::println;
con.accept(300);
}
第二种形式,类::静态方法
@Test
public void test2(){
//给int排序
Comparator<Integer> com = (x, y) -> Integer.compare(x, y);
int i = com.compare(300, 200);
System.out.println(i);
Comparator<Integer> com2 = Integer::compare;
int j = com2.compare(300, 400);
System.out.println(j);
}
第三种形式:
@Test
public void test3(){
//给int排序
BiPredicate<String, String> bp = (x,y) -> x.equals(y);
System.out.println(bp.test("aa", "bb"));
//给int排序
BiPredicate<String, String> bp1 =String::equals;
System.out.println(bp.test("aa", "aa"));
}
使用条件:
1: lambda体重调用方法的参数列表与返回值类型,要与函数式接口中抽象方法的函数列表和返回值类型保持一致。
2: 如果使用类::实例方法名则lambda 中方法的参数列表第一参数是实例方法的调用者,第二餐食是实例方法的参数。