CodeBlanks Logo Icon CodeBlanks

Method reference

Class::method ile metot referansını öğrenirsin.

Method reference

Method reference, zaten var olan bir metodu lambda yerine kullanmanın kısa yoludur. Sözdizimi: Class::method. s -> System.out.println(s) yerine System.out::println yazabilirsin.

Dört türü vardır: statik metod (Math::abs), belirli türün örnek metodu (String::length), belirli örnek metodu (System.out::println) ve kurucu (User::new). Method reference her zaman bir lambda yerine geçmez; yalnızca gövde tek bir metot çağrısı ise kullanılabilir.

Method reference ne zaman kullanılır?

Bir lambda gövdesi yalnızca tek bir metot çağrısı ise method reference daha okunaklıdır. names.forEach(s -> System.out.println(s)); yerine names.forEach(System.out::println); yazmak aynı anlama gelir ama daha kısadır.

Ancak gövde hesaplama, filtreleme veya dönüşüm içeriyorsa method reference yeterli olmaz. Örneğin s -> s.toLowerCase().trim() iki metot çağırdığı için lambda olarak kalmalıdır. Bu, okunabilirlik ve kısalık arasında bir denge kurar.

Uygulama forEach ile method reference

List<String> names = new ArrayList<>(); tanımla; "Ayşe", "Alex" ekle. names.forEach(System.out::println); çağrısı ile her elemanı method reference kullanarak yazdır.

Başlangıç kodu

Main.java
import java.util.List;
import java.util.ArrayList;

public class Main {
    public static void main(String[] args) {
        // List<String> tanimla, iki isim ekle, forEach ile method reference yazdir

    }
}

Örnek çözüm

Main.java
import java.util.List;
import java.util.ArrayList;

public class Main {
    public static void main(String[] args) {
        List<String> names = new ArrayList<>();
        names.add("Ayşe");
        names.add("Alex");
        names.forEach(System.out::println);
    }
}

Beklenen çıktı

Ayşe
Alex

Soru ve cevaplar

Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.

1 Method reference türlerini eşleştir

Kavram Anlamı
Math::abs Statik metot
String::length Türün örnek metodu
System.out::println Örnek metodu
User::new Kurucu

2 Method reference'i tamamla

Soru
names.forEach(System.out::____);
Cevap
names.forEach(System.out::println);

Açıklama: println metodu referansı ile her eleman yazdırılır.

3 Hangi lambda System.out::println ile aynıdır?

  • s -> s.length()
  • s -> System.in.read()
  • s -> s.toUpperCase()
  • s -> System.out.println(s) Doğru cevap

Açıklama: s -> System.out.println(s) ile System.out::println aynıdır.

Orta seviye bölümündeki tüm dersler