Interfejs Java 8 Funkcja
Interfejs funkcyjny (interfejs funkcjonalna) jest metodą mają wspólny interfejs.
Interfejs funkcji można niejawnie konwertowane do wyrażenia lambda.
Funkcja obsługuje interfejs dotychczasowych funkcji przyjazną lambda.
Przed JDK 1.8 posiada interfejs funkcji:
- java.lang.Runnable
- java.util.concurrent.Callable
- java.security.PrivilegedAction
- java.util.Comparator
- java.io.FileFilter
- java.nio.file.PathMatcher
- java.lang.reflect.InvocationHandler
- java.beans.PropertyChangeListener
- java.awt.event.ActionListener
- javax.swing.event.ChangeListener
JDK 1.8 nowo dodany interfejs funkcji:
- java.util.function
java.util.function zawiera wiele klas, funkcji do obsługi programowania Java, ten pakiet interfejsów funkcjonalnych:
Nie. | Interfejs i opis |
---|---|
1 | BiConsumer <T, U> To oznacza operację, która pobiera dwa parametry wejściowe i nie zwraca żadnych wyników |
2 | BiFunction <T, U, P> Przedstawia on sposób dwa parametry wejściowe i zwraca wynik |
3 | BinaryOperator <T> Działający w imieniu operatora w tego samego rodzaju operacji, a użytkownik wraca do tego samego rodzaju wyników |
4 | BiPredicate <T, U> Stanowi ona metodę wartość logiczną dwóch parametrów |
5 | BooleanSupplier Reprezentuje wartość logiczną wyniku operatora |
6 | Konsumentów <T> Reprezentuje akceptuje parametr wejściowy i brak ruchu powrotnego |
7 | DoubleBinaryOperator Jest to działający w imieniu pracy operatora dwóch wartości double i zwraca wyniki podwójną wartość. |
8 | DoubleConsumer Akceptuje działanie w imieniu podwójną wartość parametru i nie zwraca wynik. |
9 | DoubleFunction <R> Przyjmująca w imieniu podwójnej metody parametr i zwraca wynik |
10 | DoublePredicate Reprezentuje wartość logiczna parametru ma metodę podwójnej wartości |
11 | DoubleSupplier Wartość reprezentuje podwójnej konstrukcji Provider |
12 | DoubleToIntFunction Akceptuje podwójne wejście typu int i zwraca wynik. |
13 | DoubleToLongFunction Akceptuje podwójne wejście typu i zwraca długą typ wyniku |
14 | DoubleUnaryOperator Akceptuje parametr dla tego samego typu podwójne, typ zwracany jest również dwukrotnie. |
15 | Funkcja <T, R> Akceptuje parametr wejściowy i zwraca wynik. |
16 | IntBinaryOperator Przyjmuje dwa parametry tego samego typu int, typ zwracanej wartości jest również int. |
17 | IntConsumer Akceptuje parametrów wejściowych int, nie zwraca wartości. |
18 | IntFunction <R> Przyjmuje parametr wejściowy typu int i zwraca wynik. |
19 | IntPredicate : Akceptuje parametr wejściowy int i zwraca wartość logiczną wyniku. |
20 | IntSupplier Żadne argumenty i zwraca int wynik. |
21 | IntToDoubleFunction Akceptuje wejście typu int i zwraca wynik typu double. |
22 | IntToLongFunction Akceptuje wejście typu int i zwraca długi rodzaj wyników. |
23 | IntUnaryOperator Przyjmuje parametr dla tego samego typu int, typ zwracanej wartości jest również int. |
24 | LongBinaryOperator Przyjmuje dwa parametry z tego samego rodzaju długi, typ zwracany na długo. |
25 | LongConsumer To zajmuje dużo rodzaj parametrów wejściowych, nie zwraca wartości. |
26 | LongFunction <R> Aby zaakceptować długi typ parametrów wejściowych i zwraca wynik. |
27 | LongPredicate R przyjmuje parametr wejściowy długą i zwraca wartość logiczną wyników typ wartości. |
28 | LongSupplier Brak parametrów i zwraca wartość efektem typu long. |
29 | LongToDoubleFunction Aby zaakceptować długi typ wejścia i zwraca wynik typu double. |
30 | LongToIntFunction Aby zaakceptować długi typ wejścia i zwraca int wynik. |
31 | LongUnaryOperator Przyjmuje parametr dla tego samego rodzaju długi, typ zwracany na długo. |
32 | ObjDoubleConsumer <T> Akceptuje typ obiektu oraz podwójną typ parametrów wejściowych, nie zwraca wartości. |
33 | ObjIntConsumer <T> Akceptuje typ obiektu i parametrów wejściowych int, nie zwraca wartości. |
34 | ObjLongConsumer <T> Akceptuje typ obiektu i długi typ parametrów wejściowych, nie zwraca wartości. |
35 | Orzecznik <T> Akceptuje parametr wejściowy i zwraca logiczną wynik. |
36 | Dostawca <T> Brak parametrów i zwraca wynik. |
37 | ToDoubleBiFunction <T, U> Przyjmuje dwa parametry wejściowe i zwraca wynik typu double |
38 | ToDoubleFunction <T> Akceptuje parametr wejściowy i zwraca wynik typu double |
39 | ToIntBiFunction <T, U> Przyjmuje dwa parametry wejściowe i zwraca wynik typu int. |
40 | ToIntFunction <T> Akceptuje parametr wejściowy i zwraca wynik typu int. |
41 | ToLongBiFunction <T, U> Przyjmuje dwa parametry wejściowe i zwraca długą typ rezultatu. |
42 | ToLongFunction <T> Akceptuje parametr wejściowy i zwraca długą typ rezultatu. |
43 | UnaryOperator <T> Zebrane parametr typu T, typ wartości zwracanej przez T. |
Funkcjonalny interfejs instancji
Orzecznik <T> interfejs jest funkcjonalny interfejs, który przyjmuje parametr wejściowy T, zwraca logiczną wynik.
Interfejs zawiera kilka metod domyślne zostaną połączone w drugiej złożonej logiki predykatów (na przykład AND, OR, NOT).
Ten interfejs służy do testowania obiekty są prawdziwe, czy fałszywe.
Możemy za pomocą następujących przykładów (Java8Tester.java) zrozumieć interfejs funkcji predykatu <T> use:
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 是一个参数传递到 Predicate 接口的 test 方法 // n 如果存在则 test 方法返回 true System.out.println("输出所有数据:"); // 传递参数 n eval(list, n->true); // Predicate<Integer> predicate1 = n -> n%2 == 0 // n 是一个参数传递到 Predicate 接口的 test 方法 // 如果 n%2 为 0 test 方法返回 true System.out.println("输出所有偶数:"); eval(list, n-> n%2 == 0 ); // Predicate<Integer> predicate2 = n -> n > 3 // n 是一个参数传递到 Predicate 接口的 test 方法 // 如果 n 大于 3 test 方法返回 true System.out.println("输出大于 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 + " "); } } } }
Realizacja powyższego scenariusza, wyjście jest:
$ javac Java8Tester.java $ java Java8Tester 输出所有数据: 1 2 3 4 5 6 7 8 9 输出所有偶数: 2 4 6 8 输出大于 3 的所有数字: 4 5 6 7 8 9