Latest web development tutorials

Interfejs Java 8 Funkcja

Java 8 nowych funkcji Java 8 nowych funkcji


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 

Java 8 nowych funkcji Java 8 nowych funkcji