Pendahuluan

Pendahuluan mengenai Lambda Expression bisa dilihat di sini

Pendahuluan mengenai Lambda Expression di Java bisa dilihat di sini

Pendahuluan mengenai Fungsional Interface bisa dilihat di sini

Fitur Lambda Expression diperkenalkan di Java 8, yang memperkenalkan konsep-konsep fungsional programming di dalam bahasa pemrograman berbasis objek.

Konsep Functional Interface di Java lah yang menjembatani antara OOP nya Java dengan konsep Lambda Expression nya Java.


Built-In Fungsional Interface

JDK Java sudah menyediakan banyak sekali Built-in Functional Interfaces

Sehingga kita dengan mudah memilih Functional Interface yang mana saja yang cocok bagi kebutuhan code kita.


Tipe Built-In Fungsional Interface

Secara garis besar, maka kita dapat membagi built-in Functional Interface di Java, menjadi :

  • Function
  • Predicate
  • UnaryOperator
  • BinaryOperator
  • Supplier
  • Consumer

Semua interface Functional Interface ini dikelompokkan dalam satu penamaan package java, yaitu :

java.util.function

Misalnya :

  • java.util.function.Function
  • java.util.function.BiFunction
  • java.util.function.Predicate
  • java.util.function.BiPredicate
  • dll


Function

Function dalam hal ini merupakan interface Functional Interface yang utama di Java.

Merupakan fungsi yang menerima satu parameter dan mengembalikan satu nilai kembalian

Bentuknya seperti ini :

public interface Function<T,R> {

    public <R> apply(T parameter);
}

variasi dari Function ini ada :

  • BiFunction
  • DoubleToIntFunction
  • DoubleToLongFunction
  • IntFunction
  • IntToDoubleFunction
  • dll

Predicate

Predicate dalam hal ini merupakan interface Functional Interface yang mengembalikan fungsi boolean dari inputan parameter.

Bentuknya seperti ini :

public interface Predicate<T> {
    boolean test(T t);
}

Dengan Predicate ini, maka dapat dilakukan filtering dan test terhadap sebuah object T.



UnaryOperator

UnaryOperator dalam hal ini merupakan interface Functional Interface yang mengembalikan tipe yang sama dari inputan parameter yang sama.

Istilahnya ini adalah operasi pemrosesan sebuah objek saja.

Bentuknya seperti ini :

UnaryOperator<Mahasiswa> unaryOperator = (mahasiswa) -> { mahasiswa.nama = "Namamu"; return mahasiswa; };
}


BinaryOperator

BinaryOperator dalam hal ini merupakan interface Functional Interface yang mengembalikan sebuah nilai dari inputan 2 parameter.

Bentuknya seperti ini :

BinaryOperator<MyValue> binaryOperator =  (value1, value2) -> { value1.add(value2); return value1; };}


Supplier

Supplier merupakan interface Functional Interface yang mengembalikan atau mensupply nilai saja.

Bentuknya contohnya seperti ini :

Supplier<Boolean> supplier = () -> new Boolean(true);


Consumer

Consumer merupakan interface Functional Interface yang mengkomsumsi nilai parameter tanpa mengembalikan nilai.

Bentuknya contohnya seperti ini :

Consumer<Integer> consumer = (value) -> System.out.println(value);