Menguasai Antarmuka Fungsional Java 8: Panduan Lengkap
Antarmuka fungsional memiliki satu fungsionalitas untuk ditampilkan. Sebagai contoh, antarmuka Comparable dengan satu metode ‘compareTo’ digunakan untuk tujuan perbandingan. Java 8 telah mendefinisikan banyak antarmuka fungsional yang akan digunakan secara luas dalam ekspresi lambda. Berikut adalah daftar antarmuka fungsional yang didefinisikan dalam paket java.util.Function.
Sr.No.
Interface & Description
1
BiConsumer<T,U>
Mewakili operasi yang menerima dua argumen masukan, dan tidak mengembalikan hasil.
2
BiFunction<T,U,R>
Mewakili fungsi yang menerima dua argumen dan menghasilkan hasil.
3
BinaryOperator<T>
Mewakili operasi pada dua operand dari jenis yang sama, menghasilkan hasil dari jenis yang sama dengan operand.
4
BiPredicate<T,U>
Mewakili predikat (fungsi bernilai Boolean) dari dua argumen.
5
BooleanSupplier
Mewakili penyedia hasil bernilai Boolean.
6
Consumer<T>
Mewakili operasi yang menerima satu argumen masukan dan tidak mengembalikan hasil.
7
DoubleBinaryOperator
Mewakili operasi pada dua operand bernilai double dan menghasilkan hasil bernilai double.
8
DoubleConsumer
Mewakili operasi yang menerima satu argumen bernilai double dan tidak mengembalikan hasil.
9
DoubleFunction<R>
Mewakili fungsi yang menerima argumen bernilai double dan menghasilkan hasil.
10
DoublePredicate
Mewakili predikat (fungsi bernilai Boolean) dari satu argumen bernilai double.
11
DoubleSupplier
Mewakili penyedia hasil bernilai double.
12
DoubleToIntFunction
Mewakili fungsi yang menerima argumen bernilai double dan menghasilkan hasil bernilai int.
13
DoubleToLongFunction
Mewakili fungsi yang menerima argumen bernilai double dan menghasilkan hasil bernilai long.
14
DoubleUnaryOperator
Mewakili operasi pada satu operand bernilai double yang menghasilkan hasil bernilai double.
15
Function<T,R>
Mewakili fungsi yang menerima satu argumen dan menghasilkan hasil.
16
IntBinaryOperator
Mewakili operasi pada dua operand bernilai int dan menghasilkan hasil bernilai int.
17
IntConsumer
Mewakili operasi yang menerima satu argumen bernilai int dan tidak mengembalikan hasil.
18
IntFunction<R>
Mewakili fungsi yang menerima argumen bernilai int dan menghasilkan hasil.
19
IntPredicate
Mewakili predikat (fungsi bernilai Boolean) dari satu argumen bernilai int.
20
IntSupplier
Mewakili penyedia hasil bernilai int.
21
IntToDoubleFunction
Mewakili fungsi yang menerima argumen bernilai int dan menghasilkan hasil bernilai double.
22
IntToLongFunction
Mewakili fungsi yang menerima argumen bernilai int dan menghasilkan hasil bernilai long.
23
IntUnaryOperator
Mewakili operasi pada satu operand bernilai int yang menghasilkan hasil bernilai int.
24
LongBinaryOperator
Mewakili operasi pada dua operand bernilai long dan menghasilkan hasil bernilai long.
25
LongConsumer
Mewakili operasi yang menerima satu argumen bernilai long dan tidak mengembalikan hasil.
26
LongFunction<R>
Mewakili fungsi yang menerima argumen bernilai long dan menghasilkan hasil.
27
LongPredicate
Mewakili predikat (fungsi bernilai Boolean) dari satu argumen bernilai long.
28
LongSupplier
Mewakili penyedia hasil bernilai long.
29
LongToDoubleFunction
Mewakili fungsi yang menerima argumen bernilai long dan menghasilkan hasil bernilai double.
30
LongToIntFunction
Mewakili fungsi yang menerima argumen bernilai long dan menghasilkan hasil bernilai int.
31
LongUnaryOperator
Mewakili operasi pada satu operand bernilai long yang menghasilkan hasil bernilai long.
32
ObjDoubleConsumer<T>
Mewakili operasi yang menerima argumen bernilai objek dan argumen bernilai double, dan tidak mengembalikan hasil.
33
ObjIntConsumer<T>
Mewakili operasi yang menerima argumen bernilai objek dan argumen bernilai int, dan tidak mengembalikan hasil.
34
ObjLongConsumer<T>
Mewakili operasi yang menerima argumen bernilai objek dan argumen bernilai long, dan tidak mengembalikan hasil.
35
Predicate<T>
Mewakili predikat (fungsi bernilai Boolean) dari satu argumen.
36
Supplier<T>
Mewakili penyedia hasil.
37
ToDoubleBiFunction<T,U>
Mewakili fungsi yang menerima dua argumen dan menghasilkan hasil bernilai double.
38
ToDoubleFunction<T>
Mewakili fungsi yang menghasilkan hasil bernilai double.
39
ToIntBiFunction<T,U>
Mewakili fungsi yang menerima dua argumen dan menghasilkan hasil bernilai int.
40
ToIntFunction<T>
Mewakili fungsi yang menghasilkan hasil bernilai int.
41
ToLongBiFunction<T,U>
Mewakili fungsi yang menerima dua argumen dan menghasilkan hasil bernilai long.
42
ToLongFunction<T>
Mewakili fungsi yang menghasilkan hasil bernilai long.
43
UnaryOperator<T>
Mewakili operasi pada satu operand yang menghasilkan hasil dari jenis yang sama dengan operandnya.
Contoh Antarmuka Fungsional
Antarmuka Predicate <T> adalah antarmuka fungsional dengan metode test(Object) untuk mengembalikan nilai Boolean. Antarmuka ini menunjukkan bahwa suatu objek diuji untuk benar atau salah.
Buat program Java berikut menggunakan editor pilihan Anda, katakanlah di C:\> JAVA.
Java8Tester.java
Live Demo
import java.util.Arrays; import java.util.List; import java.util.function.Predicate; public class Java8Tester { public static void main(String args[]) { List<Integer> list = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9); // Predicate<Integer> predicate = n -> true // n is passed as parameter to test method of Predicate interface // test method will always return true no matter what value n has. System.out.println("Print all numbers:"); //pass n as parameter eval(list, n->true); // Predicate<Integer> predicate1 = n -> n%2 == 0 // n is passed as parameter to test method of Predicate interface // test method will return true if n%2 comes to be zero System.out.println("Print even numbers:"); eval(list, n-> n%2 == 0 ); // Predicate<Integer> predicate2 = n -> n > 3 // n is passed as parameter to test method of Predicate interface // test method will return true if n is greater than 3. System.out.println("Print numbers greater than 3:"); eval(list, n-> n > 3 ); } public static void eval(List<Integer> list, Predicate<Integer> predicate) { for(Integer n: list) { if(predicate.test(n)) { System.out.println(n + " "); } } } }
Di sini kami telah meneruskan antarmuka Predicate, yang menerima satu masukan dan mengembalikan Boolean.
Verifikasi Hasil
Kompilasi kelas menggunakan compiler javac seperti berikut −
C:\JAVA>javac Java8Tester.java
Sekarang jalankan Java8Tester seperti berikut −
C:\JAVA>java Java8Tester
Hasilnya akan seperti berikut −
Print all numbers: 1 2 3 4 5 6 7 8 9 Print even numbers: 2 4 6 8 Print numbers greater than 3: 4 5 6 7 8 9