11 Şubat 2020 Salı

Method Reference Nerede Kullanılır

Giriş
Kural olarak belki şöyle hatırlamak daha kolar.

- Eğer lambda parametre almıyorsa ve sonuç dönmüyorsa
- Eğer lambda tek parametre alıyor ve bir sonuç dönüyorsa

method reference ile yer değiştirebilir.

Ayrıca method reference okunurluğu artırıyor. Açıklaması şöyle


1. Functional Interface Yerine
Bu durumda interface'ten kalıtın yeni bir sınıf yaratmak yerine kendi metodumuzu method reference olarak geçebiliriz. Açıklaması şöyle.
So to use a method reference, you first need a lambda expression with one method. And to use a lambda expression, you first need a functional interface, an interface with just one abstract method.
1.1 Comparator Yerine
Örnek
Double sınıfındaki metodun imzası şöyle.
public int compareTo(Double anotherDouble)
Stream.max() metodu bir Functional interface olan Comparator arayüzünü alır. Dolayısıyla biz de method reference kullanarak şöyle yaparız.
Double maxMethodreference = list.stream()
  .max(Double::compareTo)
  .orElse(Double.NEGATIVE_INFINITY);
1.2. Supplier Parametre Yerine
Supplier bir Functional interface olduğu için Supplier olarak sınıfımızın metodu kullanılabilir.

1.3. Predicate Parametre Yerine
Predicate bir Functional interface olduğu için Predicate olarak sınıfımızın metodu kullanılabilir.

1.4. BiPredicate Parametre Yerine
BiPredicate bir Functional interface olduğu için BiPredicate olarak sınıfımızın metodu kullanılabilir. Metodumuzun iki parametre alması gerekir.



Hiç yorum yok:

Yorum Gönder