logo

Funkčné rozhrania Java

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.