java8 方法引用详解
程序员文章站
2022-05-04 18:09:48
...
一、方法引用概述
(这些话理解起来非常费劲,后面会结合具体情形讲解)
1、方法引用(Method References)
当要传递给Lambda体的操作,已经有了实现方法,可以使用方法引用。
2、方法引用可以看做是Lambda表达式的深层次的表达。换句话说,方法引用就是Lambda表达式,也就是函数是接口的一个实例。
3、要求:实现接口的抽象方法的参数列表和返回值类型,必须与方法引用的方法的参数列表和返回值类型保持一致。
4、格式:使用操作符“::”将类(或对象)与方法名分隔开。如下三种主要是用情况:
对象名::实现方法(非静态方法)
类::静态方法名
类::实例方法(非静态方法)
二、方法引用的三种情形
- 对象名::实现方法(非静态方法)
- 首先通过一个例子来理解一下 “当要传递给Lambda体的操作,已经有了实现方法,可以使用方法引用”这句话。
以下代码是通过供给型接口获取student信息
class student{ private Integer id; private String name; //常规的get,set,toString,constructor已省略 } //利用供给型接口获取student信息 class demo{ public static void main(String[] args) { student stu = new student(1, "李四"); Supplier<String> spl = ()->stu.getName(); System.out.println(spl.get()); } }
下面采用方法引用来实现
- 类::静态方法名
- 以下例子利用Comparator接口实现比较两个整型数据的大小
- 类::实例方法(非静态方法)
- 以下例子BiPredicate接口比较两个字符串
但是,类::实例方法(非静态方法)这种情形下,需要有前提
前提:方法的第一个参数(这里即为x)是被调用方法(这里指equals())的调用者;方法的第二个参数(这里指y)是被调用方法的参数.
上一篇: java 多线程的学习总结
下一篇: Java并发编程之CAS应用