方法引用是Java8中的一个新特性,它与Lambda表达式相关。 它允许我们在不执行构造函数或方法的情况下引用它们。 方法引用和lambda表达式相似,因为它们都需要由兼容的函数接口组成的目标类型。
Class::instanceMethodName
import java.util.*; import java.util.function.*; public class ArbitraryObjectMethodRefTest { public static void main(String[] args) { List<Person> persons = new ArrayList<Person>(); persons.add(new Person("Raja", 30)); persons.add(new Person("Jai", 25)); persons.add(new Person("Adithya", 20)); persons.add(new Person("Surya", 35)); persons.add(new Person("Ravi", 32)); List ages = ArbitraryObjectMethodRefTest.listAllAges(persons, Person :: getAge); System.out.println("打印出所有年龄段: \n" + ages); } private static List listAllAges(List person, Function<Person, Integer> f) { List result = new ArrayList(); person.forEach(x -> result.add(f.apply((Person)x))); return result; } private static class Person { private final String name; private final int age; public Person(String name, int age) { this.name = name; this.age = age; } public String getName() { return name; } public int getAge() { return age; } } }
输出结果
打印出所有年龄段: [30, 25, 20, 35, 32]