Java Lambda – 2 : lambda ber-return

Lambda, seperti halnya method, dapat memiliki kembalian karena memang pada dasarnya lambda merupakan sebuah fungsi. Deklarasi tipe kembalian dilakukan pada saat mendefinisikan method abstrak pada functional interface. 

Sebagai contoh, dibuat sebuah interface yang dapat memproses 2 bilangan dengan proses yang didefinisikan pada ekspresi lambda. Interface yang dimaksud sebagai berikut :

@FunctionalInterface
interface Proses2Bilangan{
    public double proses(double x, double y);
}

Functional interface di atas memiliki method proses dengan masukan 2 bilangan bertipe double. Method abstrak pada interface tersebut dimanfaatkan oleh ekspresi lambda untuk memproses penjumlahan dan pengurangan sebagai berikut :

Proses2Bilangan penjumlahan = (x,y) -> x+y;
Proses2Bilangan pengurangan = (double x,double y) -> x-y;
double hasilPenjumlahan = penjumlahan.proses(3,4);
double hasilPengurangan = pengurangan.proses(5.4, 4.4);

Kode di atas menunjukkan deklarasi lambda untuk penjumlahan dan pengurangan. Parameter masukan pada lambda dapat diberikan tipe data (doubel x, double y) ataupun tidak (x,y). Keduanya dapat digunakan untuk operasi penjumlahan dan pengurangan dengan memanggil merhod proses dan memasukkan data yang akan diolah. Masing-masing akan mengembalikan nilai, dengan tipe sesuai deklarasi pada method abstrak functional interface. Kode selengkapnya :

package id.lambda;

@FunctionalInterface
interface Proses2Bilangan{
    public double proses(double x, double y);
}

public class LambdaAddAnything {
    public static void main(String[] args) {
        Proses2Bilangan penjumlahan = (x,y) -> x+y;
        Proses2Bilangan pengurangan = (double x,double y) -> x-y;
        double hasilPenjumlahan = penjumlahan.proses(3,4);
        double hasilPengurangan = pengurangan.proses(5.4, 4.4);
        //kode untuk mengampilkan hasil
        System.out.println("Hasil penjumlahan : "+hasilPenjumlahan);
        System.out.println("Hasil pengurangan : "+hasilPengurangan);
    }
}

 

–end of note–

 

Leave a Reply

Your email address will not be published.