Tipe Fungsional Interface
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);