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. |