Lambda 表达式:Java8 中匿名类的消亡?
随着 Java8 中 lambda 表达式的引入,关于匿名类命运的问题出现了类。虽然 lambda 为单方法接口提供了简洁的语法,但在某些用例中,匿名类仍然具有优势。
Lambda 表达式与匿名类之间的比较
Lambda 表达式是仅限于使用单个抽象方法实现接口。它们提供了一种简洁易读的方式来定义单个操作,如对人员列表进行排序的示例所示:
Collections.sort(personList, (Person p1, Person p2) -> p1.firstName.compareTo(p2.firstName));
另一方面,匿名类可用于各种目的:
例如,匿名类可用于定义具有附加状态或功能的 Comparator 接口:
Comparator<Person> comparator = new Comparator<Person>() { private int maxAge; public int compare(Person p1, Person p2) { if (p1.age == p2.age) return p1.firstName.compareTo(p2.firstName); else return p1.age - p2.age; } };
匿名的优点类
Lambda的优点表达式
结论
虽然 lambda 表达式提供了一个令人信服的替代方案对于单方法接口,匿名类对于需要多个方法、重写或状态管理的场景仍然很有价值。 Java 开发人员应根据具体要求和所涉及的权衡选择适当的技术。
以上是Java 8 中引入 Lambda 表达式后,匿名类是否已过时?的详细内容。更多信息请关注PHP中文网其他相关文章!