Java8이 최근에 출시되었고 새로운 람다식이 정말 멋져 보이기 때문에 이것이 우리가 익숙했던 익명 클래스의 종말을 의미하는지 궁금합니다.
나는 이것에 대해 조금 연구 해 왔고 Lambda 표현식이 어떻게 분류를 수행하기 위해 Comparator의 익명 인스턴스를 가져 오는 데 사용되는 Collection의 정렬 방법과 같은 이러한 클래스를 체계적으로 대체하는지에 대한 멋진 예제를 찾았습니다.
Collections.sort(personList, new Comparator<Person>(){
public int compare(Person p1, Person p2){
return p1.firstName.compareTo(p2.firstName);
}
});
이제 Lambda를 사용하여 수행 할 수 있습니다.
Collections.sort(personList, (Person p1, Person p2) -> p1.firstName.compareTo(p2.firstName));
그리고 놀랍도록 간결하게 보입니다. 제 질문은 Lambda 대신 Java8에서 이러한 클래스를 계속 사용하는 이유가 있습니까?
편집하다
같은 질문이지만 반대 방향으로, Lambda는 단일 메서드 인터페이스에서만 사용할 수 있기 때문에 익명 클래스 대신 Lambda를 사용하면 어떤 이점이 있습니까?이 새로운 기능은 몇 가지 경우에만 사용되는 바로 가기입니까 아니면 정말 유용합니까?
Comparator.comparing(Person::getFirstName)
과 같이 구성 할 수도 getFirstName()
있습니다 firstName
.