在Java中如何使用类名实现实例方法引用?
方法引用是lambda表达式的简化形式。方法名后面可以指定一个实例或一个方法名。“::”符号可以将方法名与对象或类的名称分开。
实例方法引用引用任何类的实例方法。在下面的示例中,我们可以使用类名实现实例方法引用。
语法
<Class-Name>::<Instance-Method-Name>
示例
import java.util.*;;
import java.util.function.*;
public class ClassNameRefInstanceMethodTest {
public static void main(String args[]) {
List<Employee> empList = Arrays.asList(
new Employee("Raja", 15000),
new Employee("Adithya", 12000),
new Employee("Jai", 9000),
new Employee("Ravi", 19000),
new Employee("Surya", 8500),
new Employee("Chaitanya", 7500),
new Employee("Vamsi", 14000)
);
Function<Employee, String> getEmployeeNameFunction = new Function<Employee, String>() {
@Override
public String apply(Employee e) {
return e.getName();
}
};
System.out.println("薪水大于10000的员工列表:");
empList.stream()
.filter(e -> e.getSalary() > 10000)
.map(Employee::getName) //实例方法使用类名“Employee”引用“getName”
.forEach(e -> System.out.println(e));
}
}
// Employee 类
class Employee {
private String name;
private int salary;
public Employee(String name, int salary){
this.name = name;
this.salary = salary;
}
public String getName() {
return name;
}
public int getSalary() {
return salary;
}
}输出结果
薪水大于10000的员工列表: Raja Adithya Ravi Vamsi