logo

Funkční rozhraní Java

Rozhraní, které obsahuje přesně jednu abstraktní metodu, se nazývá funkční rozhraní. Může mít libovolný počet výchozích statických metod, ale může obsahovat pouze jednu abstraktní metodu. Může také deklarovat metody třídy objektů.

Funkční rozhraní je také známé jako Single Abstract Method Interfaces nebo SAM Interfaces. Je to nová funkce v Javě, která pomáhá dosáhnout funkčního programování.


Pří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'); } } 
Otestujte to hned

Výstup:

 Hello there 

Funkční rozhraní může mít metody třídy objektů. Viz následující příklad.

Pří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'); } } 
Otestujte to hned

Výstup:

 Hello there 

Neplatné funkční rozhraní

Funkční rozhraní může rozšířit další rozhraní pouze v případě, že nemá žádnou abstraktní metodu.

 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ýstup:

 compile-time error 

Příklad 3

V následujícím příkladu se funkční rozhraní rozšiřuje na nefunkční rozhraní.

 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(); } } 
Otestujte to hned

Výstup:

 Hello there Do it now 

Předdefinovaná funkční rozhraní Java

Java poskytuje předdefinovaná funkční rozhraní pro práci s funkčním programováním pomocí lambda a referencí metod.

Můžete také definovat své vlastní funkční rozhraní. Následuje seznam funkčních rozhraní, která jsou umístěna v balíčku java.util.function.


Rozhraní Popis
BiConsumer Představuje operaci, která přijímá dva vstupní argumenty a nevrací žádný výsledek.
Spotřebitel Představuje operaci, která přijímá jediný argument a nevrací žádný výsledek.
Funkce Představuje funkci, která přijímá jeden argument a vrací výsledek.
Predikát Představuje predikát (funkci s logickou hodnotou) jednoho argumentu.
BiFunction Představuje funkci, která přijímá dva argumenty a vrací výsledek.
Binární operátor Představuje operaci na dvou operandech stejného datového typu. Vrací výsledek stejného typu jako operandy.
BiPredicate Představuje predikát (funkci s logickou hodnotou) dvou argumentů.
BooleanSupplier Představuje dodavatele výsledků s booleovskou hodnotou.
DoubleBinaryOperator Představuje operaci se dvěma operandy dvojitého typu a vrací hodnotu typu double.
DoubleConsumer Představuje operaci, která přijímá jediný argument dvojitého typu a nevrací žádný výsledek.
DoubleFunction Představuje funkci, která přijímá argument dvojitého typu a vytváří výsledek.
DoublePredicate Představuje predikát (funkce s booleovskou hodnotou) jednoho argumentu dvojitého typu.
DoubleSupplier Představuje dodavatele výsledků dvojího typu.
DoubleToIntFunction Představuje funkci, která přijímá argument dvojitého typu a vytváří výsledek typu int.
DoubleToLongFunction Představuje funkci, která přijímá argument dvojitého typu a vytváří výsledek dlouhého typu.
DoubleUnaryOperator Představuje operaci s jedním operandem dvojího typu, která vytváří výsledek dvojího typu.
IntBinaryOperator Představuje operaci se dvěma operandy typu int a vrací výsledek typu int.
IntConsumer Představuje operaci, která přijímá jediný celočíselný argument a nevrací žádný výsledek.
IntFunction Představuje funkci, která přijímá celočíselný argument a vrací výsledek.
IntPredicate Představuje predikát (funkce s booleovskou hodnotou) jednoho celočíselného argumentu.
IntSupplier Představuje dodavatele celočíselného typu.
IntToDoubleFunction Představuje funkci, která přijímá celočíselný argument a vrací double.
IntToLongFunction Představuje funkci, která přijímá celočíselný argument a vrací long.
IntUnaryOperator Představuje operaci s jedním celočíselným operandem, která vytváří celočíselný výsledek.
LongBinaryOperator Představuje operaci se dvěma operandy dlouhého typu a vrací výsledek dlouhého typu.
LongConsumer Představuje operaci, která přijímá jediný argument dlouhého typu a nevrací žádný výsledek.
LongFunction Představuje funkci, která přijímá argument dlouhého typu a vrací výsledek.
LongPredicate Představuje predikát (funkce s booleovskou hodnotou) jednoho dlouhého argumentu typu.
LongSupplier Představuje dodavatele výsledků dlouhého typu.
LongToDoubleFunction Představuje funkci, která přijímá argument dlouhého typu a vrací výsledek typu double.
LongToIntFunction Představuje funkci, která přijímá argument dlouhého typu a vrací celočíselný výsledek.
LongUnaryOperator Představuje operaci s jedním operandem dlouhého typu, který vrací výsledek typu long.
ObjDoubleConsumer Představuje operaci, která přijímá objekt a dvojitý argument a nevrací žádný výsledek.
ObjIntConsumer Představuje operaci, která přijímá objekt a celočíselný argument. Nevrací výsledek.
ObjLongConsumer Představuje operaci, která přijímá objekt a dlouhý argument, nevrací žádný výsledek.
Dodavatel Představuje dodavatele výsledků.
ToDoubleBiFunction Představuje funkci, která přijímá dva argumenty a vytváří výsledek dvojitého typu.
ToDoubleFunction Představuje funkci, která vrací výsledek dvojitého typu.
ToIntBiFunction Představuje funkci, která přijímá dva argumenty a vrací celé číslo.
ToIntFunction Představuje funkci, která vrací celé číslo.
ToLongBiFunction Představuje funkci, která přijímá dva argumenty a vrací výsledek typu long.
ToLongFunction Představuje funkci, která vrací výsledek typu long.
UnaryOperator Představuje operaci s jedním operandem, která vrací výsledek stejného typu jako jeho operand.