logo

Java funktionella gränssnitt

Ett gränssnitt som innehåller exakt en abstrakt metod kallas funktionellt gränssnitt. Den kan ha valfritt antal förvalda statiska metoder men kan bara innehålla en abstrakt metod. Det kan också deklarera metoder för objektklass.

Funktionellt gränssnitt är också känt som Single Abstract Method Interfaces eller SAM Interfaces. Det är en ny funktion i Java, som hjälper till att uppnå funktionell programmering.


Exempel 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'); } } 
Testa det nu

Produktion:

 Hello there 

Ett funktionellt gränssnitt kan ha metoder för objektklass. Se i följande exempel.

Exempel 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'); } } 
Testa det nu

Produktion:

 Hello there 

Ogiltigt funktionellt gränssnitt

Ett funktionellt gränssnitt kan utöka ett annat gränssnitt endast när det inte har någon abstrakt metod.

 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 

Exempel 3

I följande exempel utökas ett funktionellt gränssnitt till ett icke-funktionellt gränssnitt.

 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(); } } 
Testa det nu

Produktion:

 Hello there Do it now 

Java fördefinierade-funktionella gränssnitt

Java tillhandahåller fördefinierade funktionella gränssnitt för att hantera funktionell programmering genom att använda lambda- och metodreferenser.

Du kan också definiera ditt eget anpassade funktionella gränssnitt. Följande är listan över funktionella gränssnitt som är placerade i java.util.function-paketet.


Gränssnitt Beskrivning
BiConsumer Den representerar en operation som accepterar två inmatningsargument och som inte returnerar något resultat.
Konsument Det representerar en operation som accepterar ett enda argument och inte returnerar något resultat.
Fungera Den representerar en funktion som accepterar ett argument och returnerar ett resultat.
Predikat Det representerar ett predikat (booleskt värderad funktion) av ett argument.
BiFunction Den representerar en funktion som accepterar två argument och returnerar ett a-resultat.
BinaryOperator Det representerar en operation på två operander av samma datatyp. Det returnerar ett resultat av samma typ som operanderna.
BiPredikat Den representerar ett predikat (booleskt värderad funktion) av två argument.
Boolean Supplier Det representerar en leverantör av booleskt värderade resultat.
DoubleBinaryOperator Det representerar en operation på två dubbeltypsoperander och returnerar ett dubbeltypsvärde.
DoubleConsumer Den representerar en operation som accepterar ett enkel dubbeltypsargument och inte returnerar något resultat.
Dubbelfunktion Den representerar en funktion som accepterar ett dubbeltypsargument och producerar ett resultat.
DoublePredicate Det representerar ett predikat (booleskt värderad funktion) av ett dubbeltypsargument.
DoubleSupplier Det representerar en leverantör av dubbeltypsresultat.
DoubleToIntFunction Den representerar en funktion som accepterar ett dubbeltypargument och producerar ett resultat av int-typ.
DoubleToLongFunction Den representerar en funktion som accepterar ett dubbeltypsargument och ger ett långt typresultat.
DoubleUnaryOperator Den representerar en operation på en enkel dubbeltypsoperand som ger ett dubbeltypsresultat.
IntBinaryOperator Den representerar en operation på två operander av int-typ och returnerar ett resultat av int-typ.
IntConsumer Den representerar en operation som accepterar ett enda heltalsargument och inte returnerar något resultat.
IntFunction Den representerar en funktion som accepterar ett heltalsargument och returnerar ett resultat.
IntPredicate Det representerar ett predikat (booleskt värderad funktion) av ett heltalsargument.
IntSupplier Det representerar en leverantör av heltalstyp.
IntToDoubleFunction Den representerar en funktion som accepterar ett heltalsargument och returnerar en dubbel.
IntToLongFunction Den representerar en funktion som accepterar ett heltalsargument och returnerar en lång.
IntUnaryOperator Den representerar en operation på en enstaka heltalsoperand som ger ett heltalsresultat.
LongBinaryOperator Det representerar en operation på två långa typoperander och returnerar ett långt typresultat.
LongConsumer Det representerar en operation som accepterar ett enda lång typargument och inte returnerar något resultat.
Långfunktion Den representerar en funktion som accepterar ett långt typargument och returnerar ett resultat.
LongPredicate Det representerar ett predikat (booleskt värderad funktion) av ett långtypsargument.
LongSupplier Det representerar en leverantör av långa resultat.
LongToDoubleFunction Den representerar en funktion som accepterar ett långt typargument och returnerar ett resultat av dubbel typ.
LongToIntFunction Den representerar en funktion som accepterar ett lång typargument och returnerar ett heltalsresultat.
LongUnaryOperator Det representerar en operation på en enda lång typ operand som returnerar ett långt typresultat.
ObjDoubleConsumer Den representerar en operation som accepterar ett objekt och ett dubbelargument och inte returnerar något resultat.
ObjIntConsumer Det representerar en operation som accepterar ett objekt och ett heltalsargument. Det ger inget resultat.
ObjLongConsumer Det representerar en operation som accepterar ett objekt och ett långt argument, det ger inget resultat.
Leverantör Den representerar en resultatleverantör.
ToDoubleBiFunction Den representerar en funktion som accepterar två argument och ger ett resultat med dubbel typ.
ToDoubleFunction Det representerar en funktion som returnerar ett dubbeltypsresultat.
ToIntBiFunction Den representerar en funktion som accepterar två argument och returnerar ett heltal.
ToIntFunction Den representerar en funktion som returnerar ett heltal.
ToLongBiFunction Den representerar en funktion som accepterar två argument och returnerar ett resultat av lång typ.
ToLongFunction Den representerar en funktion som returnerar ett resultat av lång typ.
UnaryOperator Den representerar en operation på en enskild operand som returnerar ett resultat av samma typ som dess operand.