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