logo

Java funktionelle grænseflader

En grænseflade, der indeholder præcis én abstrakt metode, er kendt som funktionel grænseflade. Den kan have et hvilket som helst antal standard, statiske metoder, men kan kun indeholde én abstrakt metode. Det kan også erklære metoder for objektklasse.

Funktionel grænseflade er også kendt som Single Abstract Method Interfaces eller SAM Interfaces. Det er en ny funktion i Java, som hjælper med at opnå en funktionel programmeringstilgang.

fuld hugorm

Eksempel 1

 @FunctionalInterface interface sayable{ void say(String msg); } public class FunctionalInterfaceExample implements sayable{ public void say(String msg){ System.out.println(msg); } public static void main(String[] args) { FunctionalInterfaceExample fie = new FunctionalInterfaceExample(); fie.say('Hello there'); } } 
Test det nu

Produktion:

 Hello there 

En funktionel grænseflade kan have metoder til objektklasse. Se i det følgende eksempel.

Eksempel 2

 @FunctionalInterface interface sayable{ void say(String msg); // abstract method // It can contain any number of Object class methods. int hashCode(); String toString(); boolean equals(Object obj); } public class FunctionalInterfaceExample2 implements sayable{ public void say(String msg){ System.out.println(msg); } public static void main(String[] args) { FunctionalInterfaceExample2 fie = new FunctionalInterfaceExample2(); fie.say('Hello there'); } } 
Test det nu

Produktion:

 Hello there 

Ugyldig funktionel grænseflade

En funktionel grænseflade kan kun udvide en anden grænseflade, når den ikke har nogen abstrakt metode.

 interface sayable{ void say(String msg); // abstract method } @FunctionalInterface interface Doable extends sayable{ // Invalid '@FunctionalInterface' annotation; Doable is not a functional interface void doIt(); } 

Produktion:

 compile-time error 

Eksempel 3

I det følgende eksempel udvides en funktionel grænseflade til en ikke-funktionel grænseflade.

 interface Doable{ default void doIt(){ System.out.println('Do it now'); } } @FunctionalInterface interface Sayable extends Doable{ void say(String msg); // abstract method } public class FunctionalInterfaceExample3 implements Sayable{ public void say(String msg){ System.out.println(msg); } public static void main(String[] args) { FunctionalInterfaceExample3 fie = new FunctionalInterfaceExample3(); fie.say('Hello there'); fie.doIt(); } } 
Test det nu

Produktion:

latex tekststørrelse
 Hello there Do it now 

Java prædefinerede-funktionelle grænseflader

Java giver foruddefinerede funktionelle grænseflader til at håndtere funktionel programmering ved at bruge lambda- og metodereferencer.

Du kan også definere din egen brugerdefinerede funktionelle grænseflade. Følgende er listen over funktionelle grænseflader, som er placeret i java.util.function-pakken.


Interface Beskrivelse
BiConsumer Det repræsenterer en operation, der accepterer to input-argumenter og ikke returnerer noget resultat.
Forbruger Det repræsenterer en operation, der accepterer et enkelt argument og ikke returnerer noget resultat.
Fungere Det repræsenterer en funktion, der accepterer et argument og returnerer et resultat.
Prædikat Det repræsenterer et prædikat (funktion med boolesk værdi) af et argument.
BiFunktion Den repræsenterer en funktion, der accepterer to argumenter og returnerer et a-resultat.
Binær operatør Det repræsenterer en operation på to operander af samme datatype. Det returnerer et resultat af samme type som operanderne.
Biprædikat Det repræsenterer et prædikat (funktion med boolsk værdi) af to argumenter.
Boolean Leverandør Det repræsenterer en leverandør af boolsk værdifulde resultater.
DoubleBinaryOperator Det repræsenterer en operation på to dobbelttype operander og returnerer en dobbelt type værdi.
DoubleConsumer Det repræsenterer en operation, der accepterer et enkelt dobbelttype-argument og ikke returnerer noget resultat.
Dobbeltfunktion Den repræsenterer en funktion, der accepterer et dobbelttypeargument og producerer et resultat.
Dobbeltprædikat Det repræsenterer et prædikat (funktion med boolesk værdi) af et dobbelttypeargument.
DoubleSupplier Det repræsenterer en leverandør af dobbelttype resultater.
DoubleToIntFunction Det repræsenterer en funktion, der accepterer et dobbelttype-argument og producerer et resultat af int-type.
DoubleToLongFunction Det repræsenterer en funktion, der accepterer et dobbelttypeargument og producerer et langt typeresultat.
DoubleUnaryOperator Det repræsenterer en operation på en enkelt dobbelt type operand, der producerer et dobbelt type resultat.
IntBinaryOperator Det repræsenterer en operation på to operander af int-typen og returnerer et resultat af int-typen.
IntConsumer Det repræsenterer en operation, der accepterer et enkelt heltalsargument og ikke returnerer noget resultat.
IntFunction Det repræsenterer en funktion, der accepterer et heltalsargument og returnerer et resultat.
Intprædikat Det repræsenterer et prædikat (funktion med boolsk værdi) af et heltalsargument.
IntSupplier Det repræsenterer en leverandør af heltalstypen.
IntToDoubleFunction Det repræsenterer en funktion, der accepterer et heltalsargument og returnerer en dobbelt.
IntToLongFunction Det repræsenterer en funktion, der accepterer et heltalsargument og returnerer en lang.
IntUnaryOperator Det repræsenterer en operation på en enkelt heltalsoperand, der producerer et heltalsresultat.
LongBinaryOperator Det repræsenterer en operation på to lange type operander og returnerer en lang type resultat.
Langforbruger Det repræsenterer en operation, der accepterer et enkelt lang type argument og ikke returnerer noget resultat.
Lang funktion Det repræsenterer en funktion, der accepterer et lang type argument og returnerer et resultat.
Langt Prædikat Det repræsenterer et prædikat (funktion med boolsk værdi) af ét lang type argument.
LongSupplier Det repræsenterer en leverandør af lange typer resultater.
LongToDoubleFunction Det repræsenterer en funktion, der accepterer et lang type argument og returnerer et resultat af dobbelt type.
LongToIntFunction Den repræsenterer en funktion, der accepterer et lang type argument og returnerer et heltalsresultat.
LongUnaryOperator Det repræsenterer en operation på en enkelt lang type operand, der returnerer en lang type resultat.
ObjDoubleConsumer Det repræsenterer en operation, der accepterer et objekt og et dobbeltargument og ikke returnerer noget resultat.
ObjIntConsumer Det repræsenterer en operation, der accepterer et objekt og et heltalsargument. Det giver ikke resultat.
ObjLongConsumer Det repræsenterer en operation, der accepterer et objekt og et langt argument, det returnerer intet resultat.
Leverandør Det repræsenterer en leverandør af resultater.
ToDoubleBiFunction Det repræsenterer en funktion, der accepterer to argumenter og producerer et resultat med dobbelt type.
ToDoubleFunction Det repræsenterer en funktion, der returnerer et resultat af dobbelt type.
ToIntBiFunction Det repræsenterer en funktion, der accepterer to argumenter og returnerer et heltal.
ToIntFunction Det repræsenterer en funktion, der returnerer et heltal.
ToLongBiFunction Det repræsenterer en funktion, der accepterer to argumenter og returnerer et resultat af lang type.
ToLongFunction Det repræsenterer en funktion, der returnerer et resultat af lang type.
UnaryOperator Det repræsenterer en operation på en enkelt operand, der returnerer et resultat af samme type som dens operand.