Skip to main content

Lambda Lazy Parameter

Java tidak memiliki fitur parameter lazy seperti di bahasa pemrograman seperti Scala. Lazy parameter artinya, parameter tersebut hanya akan dieksekusi ketika diakses. Untungnya, dengan menggunakan Lambda, kita bisa membuat parameter layaknya lazy parameter.

🏃 Eager Parameter

  • Contoh
 public static void main(String[] args) {
testScoreEager(60, getName()); // akan selalu memanggil method getName()
}

// secara default method java selalu Eager parameter
public static void testScoreEager(int score, String name) {
if (score > 70) {
System.out.println("Selamat " + name + " Anda lulus");
} else {
System.out.println("Anda tidak lulus");
}
}

public static String getName() {
System.out.println("Method getName() dipanggil");
return "Ucup";
}

Output:

Method getName() dipanggil
Anda tidak lulus

Dari kode di atas dapat kita lihat bahwa di dalam Java pemanggilan method akan selalu bersifat Eager Parameter, yang artinya method getName() akan selalu dipanggil walaupun kondisi nilai score yang 60, yang pada method testScoreEager parameter name tidak akan dieksekusi karena kondisi tidak sesuai.

🛌 Lazy Parameter

Dengan menggunakan Lambda maka kita dapat menggunakan Lazy Parameter pada method tersebut di atas. Contoh:

public static void main(String[] args) {
testScoreLazy(60, () -> getName()); // method getName() hanya akan dipanggil jika kondisi terpenuhi (dalam contoh ini score > 70)
}

// dengan lazy parameter
public static void testScoreLazy(int score, Supplier<String> name) {
if (score > 70) {
System.out.println("Selamat " + name.get() + " Anda lulus");
} else {
System.out.println("Anda tidak lulus");
}
}

public static String getName() {
System.out.println("Method getName() dipanggil");
return "Ucup";
}

Output:

Anda tidak lulus

Dari kode di atas parameter yang digunakan adalah Suplier yang akan akan mengembalikan result tanpa perlu mengirim parameter. Dengan menggunakan lambda maka parameter method akan bersifat Lazy yang akan mengeksekusi getName jika kondisi dalam method testScoreLazy terpenuhi saja.

info