看了一篇关于讲JAVA中lamda表达式的文章,讲的真是很好,文章链接地址为:https://objcoding.com/2019/03/04/lambda/
但是看完之后还是没有理解其中的特殊的lamda表达式:方法引用
感觉个人是否必要对这个进行阐述个人的理解的
方法引用被分为了好几类:
(1)静态方法引用 Class::methodName
(2)实例方法引用 objInstance::methodName
(3)引用类中的非静态方法:Class::methodName
(4)引用类的构造方法:Class::new 其中Class就是类名,后面跟“::new”,这个是固定写法哈,即使为了new一个对象出来,感觉没啥用目前
1.静态方法引用:com.lang.Integer::sum
BiFunction<Integer, Integer, Integer> sum = Integer::sum;
Integer result = sum.apply(1, 2);
不知道你们有没有考虑为什么使用BiFunction这个类来引用呢???
不知道你们发现了BiFunction中apply和Integer的sum的参数有什么关联吗,
(1)其中的T和U你就可以理解为Integer.sum接口中的两个入参,两个方法的如此参数个数是一样的,两个方法的返回参数个数也是一样的,就是入参一个是泛型,一个是具体的。
(2)那我可以使用BiFunction<Integer, Integer, Integer> sum = Integer::sum来接收方法引用,
其中BiFunction<Integer, Integer, Integer> sum中第一个Integer就是对应BiFunction<T,U,R>的T,第二个Integer就是对应U,第三个Int