logo

Funkcionalni vmesniki Java

Vmesnik, ki vsebuje točno eno abstraktno metodo, je znan kot funkcionalni vmesnik. Ima lahko poljubno število privzetih statičnih metod, vendar lahko vsebuje samo eno abstraktno metodo. Lahko tudi deklarira metode objektnega razreda.

Funkcionalni vmesnik je znan tudi kot vmesniki ene abstraktne metode ali vmesniki SAM. Gre za novo funkcijo v Javi, ki pomaga doseči pristop funkcionalnega programiranja.


Primer 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'); } } 
Preizkusite zdaj

Izhod:

 Hello there 

Funkcionalni vmesnik ima lahko metode razreda objektov. Glejte v naslednjem primeru.

Primer 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'); } } 
Preizkusite zdaj

Izhod:

 Hello there 

Neveljaven funkcionalni vmesnik

Funkcionalni vmesnik lahko razširi drug vmesnik le, če nima nobene abstraktne 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(); } 

Izhod:

 compile-time error 

Primer 3

V naslednjem primeru se funkcionalni vmesnik razširi na nefunkcionalni vmesnik.

 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(); } } 
Preizkusite zdaj

Izhod:

 Hello there Do it now 

Vnaprej določeni funkcionalni vmesniki Java

Java nudi vnaprej določene funkcionalne vmesnike za obravnavo funkcionalnega programiranja z uporabo lambda in referenc metod.

Določite lahko tudi svoj funkcionalni vmesnik po meri. Sledi seznam funkcionalnih vmesnikov, ki so v paketu java.util.function.


Vmesnik Opis
BiConsumer Predstavlja operacijo, ki sprejme dva vhodna argumenta in ne vrne nobenega rezultata.
Potrošnik Predstavlja operacijo, ki sprejme en sam argument in ne vrne nobenega rezultata.
funkcija Predstavlja funkcijo, ki sprejme en argument in vrne rezultat.
Predikat Predstavlja predikat (funkcijo z logično vrednostjo) enega argumenta.
BiFunction Predstavlja funkcijo, ki sprejme dva argumenta in vrne rezultat.
BinaryOperator Predstavlja operacijo nad dvema operandoma istega podatkovnega tipa. Vrne rezultat istega tipa kot operandi.
Bipredikat Predstavlja predikat (funkcija z logično vrednostjo) dveh argumentov.
BooleanSupplier Predstavlja dobavitelja rezultatov z logičnimi vrednostmi.
DoubleBinaryOperator Predstavlja operacijo na dveh operandih dvojnega tipa in vrne vrednost dvojnega tipa.
DoubleConsumer Predstavlja operacijo, ki sprejme en sam argument dvojnega tipa in ne vrne nobenega rezultata.
DoubleFunction Predstavlja funkcijo, ki sprejme argument dvojnega tipa in ustvari rezultat.
DoublePredicate Predstavlja predikat (funkcija z logično vrednostjo) enega argumenta dvojnega tipa.
DoubleSupplier Predstavlja ponudnika rezultatov dvojnega tipa.
DoubleToIntFunction Predstavlja funkcijo, ki sprejme argument dvojnega tipa in ustvari rezultat tipa int.
DoubleToLongFunction Predstavlja funkcijo, ki sprejme argument dvojnega tipa in ustvari rezultat dolgega tipa.
DoubleUnaryOperator Predstavlja operacijo na enem operandu dvojnega tipa, ki proizvede rezultat dvojnega tipa.
IntBinaryOperator Predstavlja operacijo nad dvema operandoma tipa int in vrne rezultat tipa int.
IntConsumer Predstavlja operacijo, ki sprejme en celoštevilski argument in ne vrne nobenega rezultata.
IntFunction Predstavlja funkcijo, ki sprejme celoštevilski argument in vrne rezultat.
IntPredicate Predstavlja predikat (funkcijo z logično vrednostjo) enega celega argumenta.
IntSupplier Predstavlja dobavitelja celega tipa.
IntToDoubleFunction Predstavlja funkcijo, ki sprejme celoštevilski argument in vrne dvojno.
IntToLongFunction Predstavlja funkcijo, ki sprejme celoštevilski argument in vrne dolgo.
IntUnaryOperator Predstavlja operacijo na enem celem operandu, ki proizvede celoštevilski rezultat.
LongBinaryOperator Predstavlja operacijo na dveh operandih dolgega tipa in vrne rezultat dolgega tipa.
LongConsumer Predstavlja operacijo, ki sprejme en argument dolgega tipa in ne vrne nobenega rezultata.
LongFunction Predstavlja funkcijo, ki sprejme argument dolgega tipa in vrne rezultat.
Dolgi predikat Predstavlja predikat (funkcija z logično vrednostjo) enega argumenta dolgega tipa.
LongSupplier Predstavlja dobavitelja rezultatov dolgega tipa.
LongToDoubleFunction Predstavlja funkcijo, ki sprejme argument dolgega tipa in vrne rezultat dvojnega tipa.
LongToIntFunction Predstavlja funkcijo, ki sprejme argument dolgega tipa in vrne celoštevilski rezultat.
LongUnaryOperator Predstavlja operacijo na enem operandu dolgega tipa, ki vrne rezultat dolgega tipa.
ObjDoubleConsumer Predstavlja operacijo, ki sprejme objekt in dvojni argument in ne vrne nobenega rezultata.
ObjIntConsumer Predstavlja operacijo, ki sprejme objekt in celoštevilski argument. Ne vrne rezultata.
ObjLongConsumer Predstavlja operacijo, ki sprejme objekt in dolg argument, ne vrne nobenega rezultata.
Dobavitelj Predstavlja ponudnika rezultatov.
ToDoubleBiFunction Predstavlja funkcijo, ki sprejme dva argumenta in ustvari rezultat dvojnega tipa.
ToDoubleFunction Predstavlja funkcijo, ki vrne rezultat dvojnega tipa.
ToIntBiFunction Predstavlja funkcijo, ki sprejme dva argumenta in vrne celo število.
ToIntFunction Predstavlja funkcijo, ki vrne celo število.
ToLongBiFunction Predstavlja funkcijo, ki sprejme dva argumenta in vrne rezultat dolgega tipa.
ToLongFunction Predstavlja funkcijo, ki vrne rezultat dolgega tipa.
UnaryOperator Predstavlja operacijo na enem operandu, ki vrne rezultat istega tipa kot njegov operand.