深圳的设计网站,腾讯企点打不开,注销营业执照,上海网址建设公司方法引用 若 Lambda 体中的内有方法已经实现了#xff0c;我们可以使用“方法引用”#xff08;可以理解为方法引用是 Lambda 表达式的另外一种表现形式#xff09; 语法格式
主要有以下三种语法格式#xff1a;
对象#xff1a;#xff1a;实例方法名
注意#xff1…方法引用 若 Lambda 体中的内有方法已经实现了我们可以使用“方法引用”可以理解为方法引用是 Lambda 表达式的另外一种表现形式 语法格式
主要有以下三种语法格式
对象实例方法名
注意 实例的方法要与函数式接口的抽象方法的形式一样 -- 返回值的类型和参数列表一致
代码示例 1
// 例如
ConsumerString comsumer (str) - System.out.println(str);// 可以使用下面的方式代替
PrintStream ps System.out;
ConsumerString consumer2 ps::println;代码示例 2
public class Employee {private String name;public void setName(String name) {this.name name;}public String getName() {return this.name;}
}Employee emp new Employee();
emp.setName(Gldwolf);SupplierString supplier emp::getName;System.out.println(supplier.get()); // 将会打印 Gldwolf类静态方法名
代码示例
ComparatorInteger comparator (x, y) - Integer.compare(x, y);// 可以使用方法引用来代替
ComparactorInteger comparator2 Integer.compare;类实例方法名
此种方式的适用条件当 Lambda 参数列表中的第一个参数是实例方法的调用者并且第二个参数是实例方法的参数时可以使用 “类实例方法名” 的方式如下所示
代码示例
BiPredicateString, String bp (str1, str2) - x.equals(y);// 可以使用方法引用来代替
BipredicateString, String bp2 String::equals;构造器引用
格式
ClassName::new
注意 调用的构造器会根据实现的函数接口的抽象方法的参数列表来确定如果抽象方法为无参的则调用的构造器也是无参的
代码示例 1调用无参构造器
SupplierEmployee sup () - new Employee();// 可以使用方法引用的方式来代替
SupplierEmployee sup2 Employee::new;Employee emp sup2.get();代码示例 2调用有参构造器
FunctionInteger, Employee func (x) - new Employee(x);// 使用方法引用
FunctionInteger, Employee func2 Employee:new;Employee emp func2.apply(1);数组引用
格式
Type[]::new
代码示例
FunctionInteger, String[] func (x) - new Stirng[x];
String[] strs func.appliy(10);
System.out.println(strs.length);// 使用数组引用来代替
FunctionInteger, String[] func2 String[]::new;
String[] strs2 func2.apply(20);
System.out.println(strs2.length);