Rozhranie, ktoré obsahuje presne jednu abstraktnú metódu, sa nazýva funkčné rozhranie. Môže mať ľubovoľný počet predvolených statických metód, ale môže obsahovať iba jednu abstraktnú metódu. Môže tiež deklarovať metódy triedy objektov.
Funkčné rozhranie je tiež známe ako rozhrania jednej abstraktnej metódy alebo rozhrania SAM. Je to nová funkcia v Jave, ktorá pomáha dosiahnuť funkčný prístup k programovaniu.
čo je príkaz export v linuxe
Príklad 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'); } }Vyskúšajte to
Výkon:
Hello there
Funkčné rozhranie môže mať metódy triedy objektov. Pozrite si nasledujúci príklad.
Príklad 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'); } }Vyskúšajte to
Výkon:
Hello there
Neplatné funkčné rozhranie
Funkčné rozhranie môže rozšíriť ďalšie rozhranie len vtedy, keď nemá žiadnu abstraktnú metódu.
interface sayable{ void say(String msg); // abstract method } @FunctionalInterface interface Doable extends sayable{ // Invalid '@FunctionalInterface' annotation; Doable is not a functional interface void doIt(); }
Výkon:
compile-time error
Príklad 3
V nasledujúcom príklade sa funkčné rozhranie rozširuje na nefunkčné rozhranie.
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(); } }Vyskúšajte to
Výkon:
Hello there Do it now
Preddefinované funkčné rozhrania Java
Java poskytuje preddefinované funkčné rozhrania na riešenie funkčného programovania pomocou lambda a odkazov na metódy.
Môžete si tiež definovať svoje vlastné funkčné rozhranie. Nasleduje zoznam funkčných rozhraní, ktoré sú umiestnené v balíku java.util.function.
Rozhranie | Popis |
---|---|
BiConsumer | Predstavuje operáciu, ktorá prijíma dva vstupné argumenty a nevracia žiadny výsledok. |
Spotrebiteľ | Predstavuje operáciu, ktorá akceptuje jeden argument a nevracia žiadny výsledok. |
Funkcia | Predstavuje funkciu, ktorá akceptuje jeden argument a vráti výsledok. |
Predikát | Predstavuje predikát (funkcia s booleovskou hodnotou) jedného argumentu. |
BiFunction | Predstavuje funkciu, ktorá prijíma dva argumenty a vracia výsledok. |
BinaryOperator | Predstavuje operáciu na dvoch operandoch rovnakého dátového typu. Vracia výsledok rovnakého typu ako operandy. |
BiPredicate | Predstavuje predikát (funkciu s booleovskou hodnotou) dvoch argumentov. |
BooleanSupplier | Predstavuje dodávateľa výsledkov s boolovskou hodnotou. |
DoubleBinaryOperator | Predstavuje operáciu na dvoch operandoch dvojitého typu a vracia hodnotu dvojitého typu. |
DoubleConsumer | Predstavuje operáciu, ktorá akceptuje jediný argument dvojitého typu a nevracia žiadny výsledok. |
DoubleFunction | Predstavuje funkciu, ktorá prijíma argument dvojitého typu a vytvára výsledok. |
DoublePredicate | Predstavuje predikát (funkciu s boolovskou hodnotou) jedného argumentu dvojitého typu. |
DoubleSupplier | Predstavuje dodávateľa výsledkov dvojakého typu. |
DoubleToIntFunction | Predstavuje funkciu, ktorá akceptuje argument dvojitého typu a vytvára výsledok typu int. |
DoubleToLongFunction | Predstavuje funkciu, ktorá akceptuje argument dvojitého typu a vytvára výsledok dlhého typu. |
DoubleUnaryOperator | Predstavuje operáciu s jedným operandom dvojitého typu, ktorá vytvára výsledok dvojitého typu. |
IntBinaryOperator | Predstavuje operáciu na dvoch operandoch typu int a vracia výsledok typu int. |
IntConsumer | Predstavuje operáciu, ktorá akceptuje jediný celočíselný argument a nevracia žiadny výsledok. |
IntFunction | Predstavuje funkciu, ktorá prijíma celočíselný argument a vracia výsledok. |
IntPredicate | Predstavuje predikát (funkcia s boolovskou hodnotou) jedného celočíselného argumentu. |
IntSupplier | Predstavuje dodávateľa celočíselného typu. |
IntToDoubleFunction | Predstavuje funkciu, ktorá prijíma celočíselný argument a vracia double. |
IntToLongFunction | Predstavuje funkciu, ktorá prijíma celočíselný argument a vracia dlhý. |
IntUnaryOperator | Predstavuje operáciu s jedným celočíselným operandom, ktorá vytvára celočíselný výsledok. |
LongBinaryOperator | Predstavuje operáciu na dvoch operandoch dlhého typu a vracia výsledok dlhého typu. |
LongConsumer | Predstavuje operáciu, ktorá akceptuje jediný argument dlhého typu a nevracia žiadny výsledok. |
LongFunction | Predstavuje funkciu, ktorá prijíma argument dlhého typu a vracia výsledok. |
LongPredicate | Predstavuje predikát (funkcia s boolovskou hodnotou) jedného dlhého argumentu. |
LongSupplier | Predstavuje dodávateľa výsledkov dlhého typu. |
LongToDoubleFunction | Predstavuje funkciu, ktorá prijíma argument dlhého typu a vracia výsledok typu double. |
LongToIntFunction | Predstavuje funkciu, ktorá akceptuje argument dlhého typu a vracia celočíselný výsledok. |
LongUnaryOperator | Predstavuje operáciu s jedným operandom dlhého typu, ktorý vracia výsledok dlhého typu. |
ObjDoubleConsumer | Predstavuje operáciu, ktorá akceptuje objekt a dvojitý argument a nevracia žiadny výsledok. |
ObjIntConsumer | Predstavuje operáciu, ktorá akceptuje objekt a celočíselný argument. Nevracia výsledok. |
ObjLongConsumer | Predstavuje operáciu, ktorá akceptuje objekt a dlhý argument, nevracia žiadny výsledok. |
dodávateľa | Predstavuje dodávateľa výsledkov. |
ToDoubleBiFunction | Predstavuje funkciu, ktorá prijíma dva argumenty a vytvára výsledok dvojitého typu. |
ToDoubleFunction | Predstavuje funkciu, ktorá vracia výsledok dvojitého typu. |
ToIntBiFunction | Predstavuje funkciu, ktorá prijíma dva argumenty a vracia celé číslo. |
ToIntFunction | Predstavuje funkciu, ktorá vracia celé číslo. |
ToLongBiFunction | Predstavuje funkciu, ktorá prijíma dva argumenty a vracia výsledok typu long. |
ToLongFunction | Predstavuje funkciu, ktorá vracia výsledok typu long. |
UnaryOperator | Predstavuje operáciu na jednom operande, ktorá vracia výsledok rovnakého typu ako jeho operand. |