Java 8 - Fonksiyonel Arayüzler

Fonksiyonel arayüzlerin sergilenecek tek bir işlevi vardır. Örneğin, karşılaştırma amacıyla tek bir yöntem olan 'CompareTo' ile Karşılaştırılabilir bir arayüz kullanılır. Java 8, lambda ifadelerinde yaygın olarak kullanılacak birçok işlevsel arayüz tanımlamıştır. Aşağıda java.util.Function paketinde tanımlanan işlevsel arabirimlerin listesi yer almaktadır.

Sr.No. Arayüz ve Açıklama
1

BiConsumer<T,U>

İki giriş bağımsız değişkenini kabul eden ve sonuç döndürmeyen bir işlemi temsil eder.

2

BiFunction<T,U,R>

İki bağımsız değişkeni kabul eden ve bir sonuç üreten bir işlevi temsil eder.

3

BinaryOperator<T>

İşlenenlerle aynı türde bir sonuç üreten aynı türdeki iki işlenen üzerinde bir işlemi temsil eder.

4

BiPredicate<T,U>

İki bağımsız değişkenin bir yüklemini (Boole değerli işlev) temsil eder.

5

BooleanSupplier

Boole değerli sonuçların tedarikçisini temsil eder.

6

Consumer<T>

Tek bir giriş bağımsız değişkenini kabul eden ve sonuç döndürmeyen bir işlemi temsil eder.

7

DoubleBinaryOperator

İki çift değerli işlenen üzerinde bir işlemi temsil eder ve çift değerli bir sonuç üretir.

8

DoubleConsumer

Tek bir çift değerli bağımsız değişkeni kabul eden ve sonuç döndürmeyen bir işlemi temsil eder.

9

DoubleFunction<R>

Çift değerli bir bağımsız değişkeni kabul eden ve bir sonuç üreten bir işlevi temsil eder.

10

DoublePredicate

Bir çift değerli bağımsız değişkenin bir yüklemini (Boole değerli işlev) temsil eder.

11

DoubleSupplier

Çift değerli sonuçların tedarikçisini temsil eder.

12

DoubleToIntFunction

Çift değerli bir bağımsız değişkeni kabul eden ve int değerli bir sonuç üreten bir işlevi temsil eder.

13

DoubleToLongFunction

Çift değerli bir bağımsız değişkeni kabul eden ve uzun değerli bir sonuç üreten bir işlevi temsil eder.

14

DoubleUnaryOperator

Çift değerli bir sonuç üreten tek bir çift değerli işlenen üzerinde bir işlemi temsil eder.

15

Function<T,R>

Bir bağımsız değişkeni kabul eden ve bir sonuç üreten bir işlevi temsil eder.

16

IntBinaryOperator

İki int değerli işlenen üzerinde bir işlemi temsil eder ve int değerli bir sonuç üretir.

17

IntConsumer

Tek bir int değerli bağımsız değişkeni kabul eden ve sonuç döndürmeyen bir işlemi temsil eder.

18

IntFunction<R>

İnt değerli bir bağımsız değişkeni kabul eden ve bir sonuç üreten bir işlevi temsil eder.

19

IntPredicate

Tek bir int değerli bağımsız değişkenin bir yüklemini (Boole değerli işlev) temsil eder.

20

IntSupplier

İnt değerli sonuçların tedarikçisini temsil eder.

21

IntToDoubleFunction

İnt değerli bir argümanı kabul eden ve çift değerli bir sonuç üreten bir işlevi temsil eder.

22

IntToLongFunction

İnt değerli bir bağımsız değişkeni kabul eden ve uzun değerli bir sonuç üreten bir işlevi temsil eder.

23

IntUnaryOperator

İnt değerli bir sonuç üreten tek bir int değerli işlenen üzerinde bir işlemi temsil eder.

24

LongBinaryOperator

İki uzun değerli işlenen üzerine bir işlemi temsil eder ve uzun değerli bir sonuç üretir.

25

LongConsumer

Uzun değerli tek bir bağımsız değişkeni kabul eden ve sonuç döndürmeyen bir işlemi temsil eder.

26

LongFunction<R>

Uzun değerli bir bağımsız değişkeni kabul eden ve bir sonuç üreten bir işlevi temsil eder.

27

LongPredicate

Uzun değerli bir bağımsız değişkenin bir yüklemini (Boole değerli işlev) temsil eder.

28

LongSupplier

Uzun değerli sonuçların tedarikçisini temsil eder.

29

LongToDoubleFunction

Uzun değerli bir argümanı kabul eden ve çift değerli bir sonuç üreten bir işlevi temsil eder.

30

LongToIntFunction

Uzun değerli bir bağımsız değişkeni kabul eden ve int değerli bir sonuç üreten bir işlevi temsil eder.

31

LongUnaryOperator

Uzun değerli bir sonuç üreten tek bir uzun değerli işlenen üzerinde bir işlemi temsil eder.

32

ObjDoubleConsumer<T>

Nesne değerli ve çift değerli bir bağımsız değişkeni kabul eden ve sonuç döndürmeyen bir işlemi temsil eder.

33

ObjIntConsumer<T>

Nesne değerli ve int değerli bir bağımsız değişkeni kabul eden ve sonuç döndürmeyen bir işlemi temsil eder.

34

ObjLongConsumer<T>

Nesne değerli ve uzun değerli bir bağımsız değişkeni kabul eden ve sonuç döndürmeyen bir işlemi temsil eder.

35

Predicate<T>

Bir bağımsız değişkenin bir yüklemini (Boole değerli işlev) temsil eder.

36

Supplier<T>

Bir sonuç tedarikçisini temsil eder.

37

ToDoubleBiFunction<T,U>

İki bağımsız değişkeni kabul eden ve çift değerli bir sonuç üreten bir işlevi temsil eder.

38

ToDoubleFunction<T>

Çift değerli bir sonuç üreten bir işlevi temsil eder.

39

ToIntBiFunction<T,U>

İki bağımsız değişkeni kabul eden ve int değerli bir sonuç üreten bir işlevi temsil eder.

40

ToIntFunction<T>

İnt değerli bir sonuç üreten bir işlevi temsil eder.

41

ToLongBiFunction<T,U>

İki bağımsız değişkeni kabul eden ve uzun değerli bir sonuç üreten bir işlevi temsil eder.

42

ToLongFunction<T>

Uzun değerli bir sonuç üreten bir işlevi temsil eder.

43

UnaryOperator<T>

İşleneniyle aynı türde bir sonuç üreten tek bir işlenen üzerinde bir işlemi temsil eder.

İşlevsel Arayüz Örneği

Predicate <T> arayüzü, bir Boolean değeri döndürmek için bir yöntem testi (Nesne) içeren işlevsel bir arayüzdür. Bu arayüz, bir nesnenin doğru veya yanlış olarak test edildiğini belirtir.

C: \> JAVA'da seçtiğiniz herhangi bir düzenleyiciyi kullanarak aşağıdaki Java programını oluşturun.

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 + " ");
         }
      }
   }
}

Burada, tek bir girdi alan ve Boolean döndüren Predicate arayüzünü geçtik.

Sonucu Doğrulayın

Kullanarak sınıfı derleyin javac aşağıdaki gibi derleyici -

C:\JAVA>javac Java8Tester.java

Şimdi Java8Tester'i aşağıdaki gibi çalıştırın -

C:\JAVA>java Java8Tester

Aşağıdaki çıktıyı üretmelidir -

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