Latest web development tutorials

Java 8 Funktions-Interface

Java 8 neue Funktionen Java 8 neue Funktionen


Funktion Interface (Functional Interface) ist ein Verfahren, eine gemeinsame Grenzfläche aufweist.

Funktionsschnittstelle kann implizit in einen Lambda-Ausdruck umgewandelt werden.

Funktionsschnittstelle können vorhandene Funktionen freundliche Lambda unterstützen.

Vor JDK 1.8 hat eine Funktion Schnittstelle:

  • 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 neu Funktion Schnittstelle hinzugefügt:

  • java.util.function

java.util.function Es enthält viele Klassen, Funktionen der Java-Programmierung zu unterstützen, dieses Paket von funktionalen Schnittstellen:

Nein. Schnittstelle und Beschreibung
1 BiConsumer <T, U>

Es stellt eine Operation, die zwei Eingabeparameter nimmt, und liefert keine Ergebnisse

2 Bifunktionellen <T, U, R>

Sie stellt ein Verfahren zwei Eingabeparameter annimmt, und gibt ein Ergebnis

3 BinaryOperator <T>

Die im Namen eines Benutzers in zwei der gleichen Art der Operation, und die Bedienungsperson gibt die gleiche Art der Ergebnisse

4 BiPredicate <T, U>

Es stellt eine Methode boolean Wert zwei Parameter

5 BooleanSupplier

Er stellt den Booleschen Wert des Ergebnisses des Anbieters

6 Consumer <T>

Stellt akzeptiert einen Eingabeparameter und keinen Rückgabe Betrieb

7 DoubleBinaryOperator

Es handelt im Namen der beiden Doppelwerte Operator Operation, und gibt die Ergebnisse eines doppelten Wert.

8 DoubleConsumer

Akzeptiert eine Operation im Auftrag eines doppelten Wert des Parameters, und kein Ergebnis zurück.

9 Doppelfunktion <R>

Annehmen im Namen eines Doppel Parameter-Methode, und gibt das Ergebnis

10 DoublePredicate

Es stellt ein boolean Wert des Parameters ein Doppelwertmethode hat

11 DoubleSupplier

Wert für eine Doppelstruktur Provider

12 DoubleToIntFunction

Akzeptiert ein Doppeltyp Eingabe und gibt einen int Ergebnis.

13 DoubleToLongFunction

Akzeptiert ein Doppeltyp Eingabe und gibt einen langen Art des Ergebnisses

14 DoubleUnaryOperator

Akzeptiert einen Parameter für die gleiche Art von Doppel, Rückgabetyp ist ebenfalls doppelt.

15 Funktion <T, R>

Akzeptiert ein Eingabeparameter und gibt ein Ergebnis.

16 IntBinaryOperator

Nimmt zwei Parameter mit dem gleichen Typ int, ist der Rückgabewert Typ auch int.

17 IntConsumer

Akzeptiert ein int Eingangsparameter, keinen Rückgabewert.

18 IntFunction <R>

Akzeptiert einen Eingangsparameter vom Typ int und gibt ein Ergebnis zurück.

19 IntPredicate

: Nimmt eine int Eingabeparameter und gibt einen Booleschen Wert des Ergebnisses.

20 IntSupplier

Keine Argumente und gibt einen int Ergebnis.

21 IntToDoubleFunction

Nimmt eine Eingabe vom Typ int und gibt ein Ergebnis vom Typ double.

22 IntToLongFunction

Nimmt eine Eingabe vom Typ int und gibt eine lange Art des Ergebnisses.

23 IntUnaryOperator

Akzeptiert einen Parameter für den gleichen Typ int, ist der Rückgabewert Typ auch int.

24 LongBinaryOperator

Er nimmt zwei Parameter mit der gleichen Art von langen, Rückgabetyp für lange.

25 LongConsumer

Es dauert eine lange Art von Eingabeparametern, kein Rückgabewert.

26 LongFunction <R>

Um eine lange Art von Eingabeparameter akzeptieren und gibt ein Ergebnis zurück.

27 LongPredicate

R nimmt einen langen Eingabeparameter und gibt einen Booleschen Wert Typ Ergebnisse.

28 LongSupplier

Keine Parameter und liefert einen Ergebniswert vom Typ long.

29 LongToDoubleFunction

Um eine lange Art der Eingabe akzeptieren und gibt ein Ergebnis vom Typ double.

30 LongToIntFunction

Um eine lange Art der Eingabe akzeptieren und gibt einen int Ergebnis.

31 LongUnaryOperator

Er akzeptiert einen Parameter für die gleiche Art von langen, Rückgabetyp für lange.

32 ObjDoubleConsumer <T>

Akzeptiert ein Objekttyp und eine doppelte Art von Eingabeparametern, kein Rückgabewert.

33 ObjIntConsumer <T>

Akzeptiert ein Objekttyp und ein int Eingangsparameter, keinen Rückgabewert.

34 ObjLongConsumer <T>

Akzeptiert ein Objekttyp und eine lange Art von Eingabeparametern, kein Rückgabewert.

35 Predicate <T>

Akzeptiert ein Eingabeparameter und gibt einen Booleschen Ergebnis.

36 Lieferant <T>

Keine Parameter und gibt ein Ergebnis zurück.

37 ToDoubleBiFunction <T, U>

Er nimmt zwei Eingabeparameter und gibt ein Ergebnis vom Typ Doppel

38 ToDoubleFunction <T>

Akzeptiert ein Eingabeparameter und gibt ein Ergebnis vom Typ Doppel

39 ToIntBiFunction <T, U>

Er nimmt zwei Eingabeparameter und gibt ein Ergebnis vom Typ int.

40 ToIntFunction <T>

Akzeptiert ein Eingabeparameter und gibt ein Ergebnis vom Typ int.

41 ToLongBiFunction <T, U>

Er nimmt zwei Eingabeparameter und gibt einen langen Art des Ergebnisses.

42 ToLongFunction <T>

Akzeptiert ein Eingabeparameter und gibt einen langen Art des Ergebnisses.

43 UnaryOperator <T>

Nehmen Sie einen Parameter des Typs T, den Typ des Rückgabewert für T.


Funktionsschnittstelleninstanz

Predicate <T> Schnittstelle ist eine funktionale Schnittstelle, die einen Eingangsparameter T annimmt, gibt einen booleschen Ergebnis.

Die Schnittstelle enthält mehrere Standardmethoden in andere komplexe Prädikatenlogik kombiniert werden (zum Beispiel: AND, OR, NOT).

Diese Schnittstelle wird verwendet, um Objekte wahr oder falsch sind zu testen.

Wir können durch die folgenden Beispiele (Java8Tester.java) zu verstehen, die Funktion Schnittstelle Predicate <T> verwenden:

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

Die Umsetzung des obigen Skripts, Ausgabe lautet:

$ 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 neue Funktionen Java 8 neue Funktionen