Java8 yakın zamanda piyasaya sürüldüğünden ve yepyeni lambda ifadeleri gerçekten harika göründüğünden, bunun alıştığımız Anonymous sınıflarının ölümü anlamına gelip gelmediğini merak ediyordum.
Bu konuda biraz araştırma yaptım ve Lambda ifadelerinin sistematik olarak bu sınıfların yerini nasıl alacağına dair harika örnekler buldum, örneğin Koleksiyonun sıralama yöntemi, sıralamayı gerçekleştirmek için Anonim bir Karşılaştırıcı örneği almak için kullanılır:
Collections.sort(personList, new Comparator<Person>(){
public int compare(Person p1, Person p2){
return p1.firstName.compareTo(p2.firstName);
}
});
Artık Lambdas kullanılarak yapılabilir:
Collections.sort(personList, (Person p1, Person p2) -> p1.firstName.compareTo(p2.firstName));
Ve şaşırtıcı derecede özlü görünüyor. Öyleyse sorum şu, Lambdas yerine Java8'de bu sınıfları kullanmaya devam etmek için herhangi bir neden var mı?
DÜZENLE
Aynı soru ama tersi yönde, Anonim sınıflar yerine Lambdas kullanmanın faydaları nelerdir, çünkü Lambdas yalnızca tek yöntemli arayüzlerle kullanılabilir, bu yeni özellik yalnızca birkaç durumda kullanılan bir kısayol mu yoksa gerçekten yararlı mı?
Comparator.comparing(Person::getFirstName)
eğer getFirstName()
geri dönen bir yöntem olacaksa firstName
.