Java 8 - Antarmuka Fungsional
Antarmuka fungsional memiliki satu fungsi untuk dipamerkan. Misalnya, antarmuka yang Dapat Dibandingkan dengan metode tunggal 'bandingkanTo' digunakan untuk tujuan perbandingan. Java 8 telah mendefinisikan banyak antarmuka fungsional untuk digunakan secara ekstensif dalam ekspresi lambda. Berikut adalah daftar antarmuka fungsional yang didefinisikan dalam paket java.util.Function.
Sr.No. | Antarmuka & Deskripsi |
---|---|
1 | BiConsumer<T,U> Merepresentasikan operasi yang menerima dua argumen input, dan tidak mengembalikan hasil. |
2 | BiFunction<T,U,R> Merepresentasikan fungsi yang menerima dua argumen dan menghasilkan hasil. |
3 | BinaryOperator<T> Merepresentasikan operasi pada dua operan dengan jenis yang sama, menghasilkan hasil dengan jenis yang sama seperti operan. |
4 | BiPredicate<T,U> Merepresentasikan predikat (fungsi bernilai Boolean) dari dua argumen. |
5 | BooleanSupplier Mewakili pemasok hasil bernilai Boolean. |
6 | Consumer<T> Merepresentasikan operasi yang menerima satu argumen input dan tidak mengembalikan hasil. |
7 | DoubleBinaryOperator Merupakan operasi pada dua operan bernilai ganda dan menghasilkan hasil bernilai ganda. |
8 | DoubleConsumer Merepresentasikan operasi yang menerima satu argumen bernilai ganda dan tidak mengembalikan hasil. |
9 | DoubleFunction<R> Merepresentasikan fungsi yang menerima argumen bernilai ganda dan menghasilkan hasil. |
10 | DoublePredicate Merepresentasikan predikat (fungsi bernilai Boolean) dari satu argumen bernilai ganda. |
11 | DoubleSupplier Merupakan pemasok hasil bernilai ganda. |
12 | DoubleToIntFunction Merepresentasikan fungsi yang menerima argumen bernilai ganda dan menghasilkan hasil yang bernilai int. |
13 | DoubleToLongFunction Merepresentasikan fungsi yang menerima argumen bernilai ganda dan menghasilkan hasil bernilai panjang. |
14 | DoubleUnaryOperator Merepresentasikan operasi pada operand bernilai ganda tunggal yang menghasilkan hasil bernilai ganda. |
15 | Function<T,R> Merepresentasikan fungsi yang menerima satu argumen dan menghasilkan hasil. |
16 | IntBinaryOperator Merepresentasikan operasi pada dua operan int-nilai dan menghasilkan hasil int-nilai. |
17 | IntConsumer Merepresentasikan operasi yang menerima satu argumen bernilai int dan tidak mengembalikan hasil. |
18 | IntFunction<R> Merepresentasikan fungsi yang menerima argumen int-nilai dan menghasilkan hasil. |
19 | IntPredicate Merepresentasikan predikat (fungsi bernilai Boolean) dari satu argumen bernilai int. |
20 | IntSupplier Mewakili pemasok hasil yang bernilai int. |
21 | IntToDoubleFunction Merepresentasikan fungsi yang menerima argumen nilai int dan menghasilkan hasil nilai ganda. |
22 | IntToLongFunction Merepresentasikan fungsi yang menerima argumen bernilai int dan menghasilkan hasil bernilai panjang. |
23 | IntUnaryOperator Merepresentasikan operasi pada operand nilai int tunggal yang menghasilkan hasil nilai int. |
24 | LongBinaryOperator Merupakan operasi pada dua operan bernilai lama dan menghasilkan hasil yang bernilai panjang. |
25 | LongConsumer Merepresentasikan operasi yang menerima satu argumen bernilai panjang dan tidak mengembalikan hasil. |
26 | LongFunction<R> Merepresentasikan fungsi yang menerima argumen bernilai panjang dan memberikan hasil. |
27 | LongPredicate Merepresentasikan predikat (fungsi bernilai Boolean) dari satu argumen bernilai panjang. |
28 | LongSupplier Mewakili pemasok hasil yang bernilai lama. |
29 | LongToDoubleFunction Merepresentasikan fungsi yang menerima argumen bernilai panjang dan menghasilkan hasil bernilai ganda. |
30 | LongToIntFunction Merepresentasikan fungsi yang menerima argumen bernilai panjang dan menghasilkan hasil bernilai int. |
31 | LongUnaryOperator Merepresentasikan operasi pada operand tunggal bernilai panjang yang menghasilkan hasil bernilai panjang. |
32 | ObjDoubleConsumer<T> Merepresentasikan operasi yang menerima argumen bernilai objek dan bernilai ganda, dan tidak mengembalikan hasil. |
33 | ObjIntConsumer<T> Merepresentasikan operasi yang menerima argumen nilai objek dan nilai int, dan tidak mengembalikan hasil. |
34 | ObjLongConsumer<T> Merepresentasikan operasi yang menerima argumen bernilai objek dan bernilai panjang, dan tidak mengembalikan hasil. |
35 | Predicate<T> Merepresentasikan predikat (fungsi bernilai Boolean) dari satu argumen. |
36 | Supplier<T> Merupakan pemasok hasil. |
37 | ToDoubleBiFunction<T,U> Merepresentasikan fungsi yang menerima dua argumen dan menghasilkan hasil bernilai ganda. |
38 | ToDoubleFunction<T> Merepresentasikan fungsi yang menghasilkan hasil bernilai ganda. |
39 | ToIntBiFunction<T,U> Merepresentasikan fungsi yang menerima dua argumen dan menghasilkan hasil int-nilai. |
40 | ToIntFunction<T> Merepresentasikan fungsi yang menghasilkan hasil int-valued. |
41 | ToLongBiFunction<T,U> Merepresentasikan fungsi yang menerima dua argumen dan menghasilkan hasil yang bernilai panjang. |
42 | ToLongFunction<T> Merepresentasikan fungsi yang menghasilkan hasil yang bernilai panjang. |
43 | UnaryOperator<T> Merepresentasikan operasi pada operan tunggal yang menghasilkan hasil dengan jenis yang sama seperti operannya. |
Contoh Antarmuka Fungsional
Predikat <T> antarmuka adalah antarmuka fungsional dengan tes metode (Objek) untuk mengembalikan nilai Boolean. Antarmuka ini menandakan bahwa suatu objek diuji benar atau salah.
Buat program Java berikut menggunakan editor pilihan Anda di, misalnya, C: \> JAVA.
Java8Tester.java
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 kita telah melewati antarmuka Predicate, yang mengambil satu input dan mengembalikan Boolean.
Verifikasi Hasilnya
Kompilasi kelas menggunakan javac kompiler sebagai berikut -
C:\JAVA>javac Java8Tester.java
Sekarang jalankan Java8Tester sebagai berikut -
C:\JAVA>java Java8Tester
Ini harus menghasilkan keluaran 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