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