Industrielle Fertigung
Industrielles Internet der Dinge | Industrielle Materialien | Gerätewartung und Reparatur | Industrielle Programmierung |
home  MfgRobots >> Industrielle Fertigung >  >> Industrial programming >> Java

Java 8 - Funktionale Schnittstellen

Funktionale Schnittstellen müssen eine einzige Funktionalität aufweisen. Beispielsweise wird eine Comparable-Schnittstelle mit einer einzigen Methode „compareTo“ zu Vergleichszwecken verwendet. Java 8 hat viele funktionale Schnittstellen definiert, die umfassend in Lambda-Ausdrücken verwendet werden können. Es folgt die Liste der funktionalen Schnittstellen, die im java.util.Function-Paket definiert sind.


Sr.No. Schnittstelle &Beschreibung
1

BiConsumer

Stellt eine Operation dar, die zwei Eingabeargumente akzeptiert und kein Ergebnis zurückgibt.

2

BiFunction

Stellt eine Funktion dar, die zwei Argumente akzeptiert und ein Ergebnis erzeugt.

3

BinaryOperator

Stellt eine Operation mit zwei Operanden desselben Typs dar, die ein Ergebnis desselben Typs wie die Operanden erzeugt.

4

BiPredicate

Repräsentiert ein Prädikat (boolesche Funktion) aus zwei Argumenten.

5

BooleanSupplier

Stellt einen Anbieter von Ergebnissen mit booleschen Werten dar.

6

Verbraucher

Stellt eine Operation dar, die ein einzelnes Eingabeargument akzeptiert und kein Ergebnis zurückgibt.

7

DoubleBinaryOperator

Stellt eine Operation mit zwei doppelwertigen Operanden dar und erzeugt ein doppelwertiges Ergebnis.

8

DoubleConsumer

Stellt eine Operation dar, die ein einzelnes zweiwertiges Argument akzeptiert und kein Ergebnis zurückgibt.

9

DoubleFunction

Stellt eine Funktion dar, die ein zweiwertiges Argument akzeptiert und ein Ergebnis erzeugt.

10

DoublePredicate

Stellt ein Prädikat (boolesche Funktion) eines zweiwertigen Arguments dar.

11

DoubleSupplier

Stellt einen Anbieter von zweiwertigen Ergebnissen dar.

12

DoubleToIntFunction

Stellt eine Funktion dar, die ein zweiwertiges Argument akzeptiert und ein ganzzahliges Ergebnis erzeugt.

13

DoubleToLongFunction

Stellt eine Funktion dar, die ein zweiwertiges Argument akzeptiert und ein langwertiges Ergebnis erzeugt.

14

DoubleUnaryOperator

Stellt eine Operation an einem einzelnen zweiwertigen Operanden dar, die ein zweiwertiges Ergebnis erzeugt.

15

Funktion

Stellt eine Funktion dar, die ein Argument akzeptiert und ein Ergebnis erzeugt.

16

IntBinaryOperator

Stellt eine Operation mit zwei ganzzahligen Operanden dar und erzeugt ein ganzzahliges Ergebnis.

17

IntConsumer

Stellt eine Operation dar, die ein einzelnes ganzzahliges Argument akzeptiert und kein Ergebnis zurückgibt.

18

IntFunction

Stellt eine Funktion dar, die ein ganzzahliges Argument akzeptiert und ein Ergebnis erzeugt.

19

IntPredicate

Stellt ein Prädikat (boolesche Funktion) eines ganzzahligen Arguments dar.

20

IntLieferant

Stellt einen Anbieter von int-Wert-Ergebnissen dar.

21

IntToDoubleFunction

Stellt eine Funktion dar, die ein ganzzahliges Argument akzeptiert und ein zweiwertiges Ergebnis erzeugt.

22

IntToLongFunction

Stellt eine Funktion dar, die ein ganzzahliges Argument akzeptiert und ein langwertiges Ergebnis erzeugt.

23

IntUnaryOperator

Stellt eine Operation mit einem einzelnen ganzzahligen Operanden dar, der ein ganzzahliges Ergebnis erzeugt.

24

LongBinaryOperator

Stellt eine Operation mit zwei langwertigen Operanden dar und erzeugt ein langwertiges Ergebnis.

25

LongConsumer

Stellt eine Operation dar, die ein einzelnes Argument mit langem Wert akzeptiert und kein Ergebnis zurückgibt.

26

LongFunction

Stellt eine Funktion dar, die ein langwertiges Argument akzeptiert und ein Ergebnis erzeugt.

27

LongPredicate

Stellt ein Prädikat (boolesche Funktion) eines Arguments mit langem Wert dar.

28

LongSupplier

Stellt einen Lieferanten von langgeschätzten Ergebnissen dar.

29

LongToDoubleFunction

Stellt eine Funktion dar, die ein langwertiges Argument akzeptiert und ein zweiwertiges Ergebnis erzeugt.

30

LongToIntFunction

Stellt eine Funktion dar, die ein langwertiges Argument akzeptiert und ein ganzzahliges Ergebnis erzeugt.

31

LongUnaryOperator

Stellt eine Operation an einem einzelnen langwertigen Operanden dar, die ein langwertiges Ergebnis erzeugt.

32

ObjDoubleConsumer

Stellt eine Operation dar, die ein objektwertiges und ein doppelwertiges Argument akzeptiert und kein Ergebnis zurückgibt.

33

ObjIntConsumer

Stellt eine Operation dar, die ein objektwertiges und ein ganzzahliges Argument akzeptiert und kein Ergebnis zurückgibt.

34

ObjLongConsumer

Stellt eine Operation dar, die ein objektwertiges und ein langwertiges Argument akzeptiert und kein Ergebnis zurückgibt.

35

Prädikat

Stellt ein Prädikat (boolesche Funktion) eines Arguments dar.

36

Lieferant

Stellt einen Ergebnislieferanten dar.

37

ToDoubleBiFunction

Stellt eine Funktion dar, die zwei Argumente akzeptiert und ein zweiwertiges Ergebnis erzeugt.

38

ToDoubleFunction

Stellt eine Funktion dar, die ein zweiwertiges Ergebnis erzeugt.

39

ToIntBiFunction

Stellt eine Funktion dar, die zwei Argumente akzeptiert und ein ganzzahliges Ergebnis erzeugt.

40

ToIntFunction

Stellt eine Funktion dar, die ein ganzzahliges Ergebnis erzeugt.

41

ToLongBiFunction

Stellt eine Funktion dar, die zwei Argumente akzeptiert und ein langwertiges Ergebnis erzeugt.

42

ToLongFunction

Stellt eine Funktion dar, die ein Ergebnis mit langen Werten erzeugt.

43

UnaryOperator

Stellt eine Operation an einem einzelnen Operanden dar, die ein Ergebnis desselben Typs wie sein Operand erzeugt.


Beispiel einer funktionalen Schnittstelle

Die Predicate -Schnittstelle ist eine funktionale Schnittstelle mit einer Methode test(Object), um einen booleschen Wert zurückzugeben. Diese Schnittstelle zeigt an, dass ein Objekt auf wahr oder falsch getestet wird.

Erstellen Sie das folgende Java-Programm mit einem beliebigen Editor Ihrer Wahl in beispielsweise C:\> JAVA.

Java8Tester.java

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

Hier haben wir die Predicate-Schnittstelle übergeben, die eine einzelne Eingabe akzeptiert und Boolean zurückgibt.

Überprüfen Sie das Ergebnis

Kompilieren Sie die Klasse mit javac Compiler wie folgt −

C:\JAVA>javac Java8Tester.java

Führen Sie nun den Java8Tester wie folgt aus −

C:\JAVA>java Java8Tester

Es sollte die folgende Ausgabe erzeugen −

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

Java

  1. Java-Operatoren
  2. Java-Kommentare
  3. Java for-each-Schleife
  4. Java-Strings
  5. Java-Schnittstelle
  6. Anonyme Java-Klasse
  7. Java-Versuch-mit-Ressourcen
  8. Java-Anmerkungen
  9. Java-Assertionen
  10. Java-Vektor