logo

Java funksjonelle grensesnitt

Et grensesnitt som inneholder nøyaktig én abstrakt metode er kjent som funksjonelt grensesnitt. Den kan ha et hvilket som helst antall standard statiske metoder, men kan bare inneholde én abstrakt metode. Den kan også erklære metoder for objektklasse.

Funksjonelt grensesnitt er også kjent som Single Abstract Method Interfaces eller SAM Interfaces. Det er en ny funksjon i Java, som bidrar til å oppnå funksjonell programmeringstilnærming.

full huggorm

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 nå

Produksjon:

 Hello there 

Et funksjonelt grensesnitt kan ha metoder for objektklasse. Se i 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 nå

Produksjon:

 Hello there 

Ugyldig funksjonelt grensesnitt

Et funksjonelt grensesnitt kan utvide et annet grensesnitt bare når det ikke har noen 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(); } 

Produksjon:

 compile-time error 

Eksempel 3

I det følgende eksempelet utvides et funksjonelt grensesnitt til et ikke-funksjonelt grensesnitt.

 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 nå

Produksjon:

latex tekststørrelse
 Hello there Do it now 

Java forhåndsdefinerte funksjonelle grensesnitt

Java gir forhåndsdefinerte funksjonelle grensesnitt for å håndtere funksjonell programmering ved å bruke lambda og metodereferanser.

Du kan også definere ditt eget tilpassede funksjonelle grensesnitt. Følgende er listen over funksjonelle grensesnitt som er plassert i java.util.function-pakken.


Grensesnitt Beskrivelse
BiConsumer Den representerer en operasjon som godtar to input-argumenter og ikke returnerer noe resultat.
Forbruker Den representerer en operasjon som godtar et enkelt argument og ikke returnerer noe resultat.
Funksjon Den representerer en funksjon som godtar ett argument og returnerer et resultat.
Predikat Den representerer et predikat (funksjon med boolsk verdi) av ett argument.
Bifunksjon Den representerer en funksjon som godtar to argumenter og returnerer et a-resultat.
BinaryOperator Den representerer en operasjon på to operander av samme datatype. Den returnerer et resultat av samme type som operandene.
Bipredikat Den representerer et predikat (boolsk-verdifunksjon) av to argumenter.
Boolean Supplier Det representerer en leverandør av boolske resultater.
DoubleBinaryOperator Den representerer en operasjon på to doble type operander og returnerer en dobbel type verdi.
DoubleConsumer Den representerer en operasjon som godtar et enkelt dobbelttype-argument og ikke returnerer noe resultat.
Dobbeltfunksjon Den representerer en funksjon som aksepterer et dobbelttype-argument og produserer et resultat.
DoublePredicate Den representerer et predikat (funksjon med boolsk verdi) av ett dobbelttype-argument.
DoubleSupplier Det representerer en leverandør av dobbel type resultater.
DoubleToIntFunction Den representerer en funksjon som godtar et dobbelttype-argument og produserer et resultat av int-type.
DoubleToLongFunction Den representerer en funksjon som godtar et dobbelttypeargument og produserer et langt typeresultat.
DoubleUnaryOperator Den representerer en operasjon på en enkelt dobbel type operand som gir et resultat av dobbel type.
IntBinaryOperator Den representerer en operasjon på to operander av int-type og returnerer et resultat av int-type.
IntConsumer Den representerer en operasjon som godtar et enkelt heltallsargument og ikke returnerer noe resultat.
IntFunction Den representerer en funksjon som godtar et heltallsargument og returnerer et resultat.
IntPredicate Det representerer et predikat (funksjon med boolsk verdi) av ett heltallsargument.
IntSupplier Den representerer en leverandør av heltallstype.
IntToDoubleFunction Den representerer en funksjon som godtar et heltallsargument og returnerer en dobbel.
IntToLongFunction Den representerer en funksjon som godtar et heltallsargument og returnerer en lang.
IntUnaryOperator Den representerer en operasjon på en enkelt heltallsoperand som gir et heltallsresultat.
LongBinaryOperator Den representerer en operasjon på to lange type operander og returnerer en lang type resultat.
LongConsumer Den representerer en operasjon som aksepterer et enkelt lang type argument og ikke returnerer noe resultat.
Lang funksjon Den representerer en funksjon som aksepterer et lang type argument og returnerer et resultat.
LongPredicate Den representerer et predikat (funksjon med boolsk verdi) av ett argument av lang type.
LongSupplier Det representerer en leverandør av lange type resultater.
LongToDoubleFunction Den representerer en funksjon som aksepterer et lang type argument og returnerer et resultat av dobbel type.
LongToIntFunction Den representerer en funksjon som aksepterer et lang type argument og returnerer et heltallsresultat.
LongUnaryOperator Den representerer en operasjon på en enkelt lang type operand som returnerer en lang type resultat.
ObjDoubleConsumer Den representerer en operasjon som aksepterer et objekt og et dobbeltargument, og som ikke returnerer noe resultat.
ObjIntConsumer Den representerer en operasjon som aksepterer et objekt og et heltallsargument. Det gir ikke resultat.
ObjLongConsumer Den representerer en operasjon som aksepterer et objekt og et langt argument, det gir ikke noe resultat.
Leverandør Den representerer en leverandør av resultater.
ToDoubleBiFunction Den representerer en funksjon som aksepterer to argumenter og produserer et resultat med dobbel type.
ToDoubleFunction Den representerer en funksjon som returnerer et resultat av dobbel type.
ToIntBiFunction Den representerer en funksjon som aksepterer to argumenter og returnerer et heltall.
ToIntFunction Den representerer en funksjon som returnerer et heltall.
ToLongBiFunction Den representerer en funksjon som aksepterer to argumenter og returnerer et resultat av lang type.
ToLongFunction Den representerer en funksjon som returnerer et resultat av lang type.
UnaryOperator Den representerer en operasjon på en enkelt operand som returnerer et resultat av samme type som operanden.