Lambda Expressions
1.Reference to a static method
@Test(dataProvider = "persons")
public void testSortPersons2(Person[] persons) {
Arrays.sort(persons, PersonUtil::compareByAge);
assertSortedPersons(persons);
}
2.Reference to an instance method of a particular object
@Test(dataProvider = "persons")
public void testSortPersons3(Person[] persons) {
Arrays.sort(persons, sean::compareByAge);
assertSortedPersons(persons);
}
3.Reference to an instance method of an arbitrary object of a particular type
public void testSortNames() {
String[] names = { sean.getName(), wanyu.getName(), shaohan.getName(), mohan.getName() };
Arrays.sort(names, String::compareToIgnoreCase);
assertEquals(mohan.getName(), names[0]);
assertEquals(sean.getName(), names[1]);
assertEquals(shaohan.getName(), names[2]);
assertEquals(wanyu.getName(), names[3]);
}
4.Reference to a constructor
@Test(dataProvider = "persons")
public void testTransferElements(Person[] persons) {
Set<Person> newPersons = PersonUtil.transferElements(Arrays.asList(persons), HashSet<Person>::new);
assertTrue(newPersons.size() == 4);
assertTrue(newPersons.contains(shaohan));
assertTrue(newPersons.contains(mohan));
assertTrue(newPersons.contains(sean));
assertTrue(newPersons.contains(wanyu));
}

本文通过四个具体案例展示了Java中Lambda表达式的不同用法:静态方法引用、特定对象实例方法引用、任意对象类型实例方法引用及构造器引用,旨在帮助读者深入理解并灵活运用Lambda表达式。
187

被折叠的 条评论
为什么被折叠?



