Tento článek je zrcadlovým článkem o strojovém překladu, klikněte zde pro přechod na původní článek.

Pohled: 24226|Odpověď: 1

[Zdroj] Podrobné vysvětlení běžných funkčních rozhraní (delegátů) v Javě

[Kopírovat odkaz]
Zveřejněno 16.09.2021 9:28:21 | | | |
API JDK 1.8 obsahuje mnoho vestavěných funkčních rozhraní, jako jsou Comparator nebo Runnable rozhraní běžně používaná ve staré Javě, která přidávají @FunctionalInterface anotace, aby je bylo možné používat na lambdách. Nyní si to opravdu pojďme porozumět ze vstupu běžných funkcí ve Funkci.

Jménotyppopis
SpotřebitelSpotřebitel< T >Přijímá T objektů, nevrací hodnoty
PredikátPredikat< T >Přijme objekt T a vrátí booleovskou hodnotu
FunkceFunkce< T, R >Přijímá objekt T a vrací objekt R
DodavatelDodavatel< T >Uveďte T objekty (např. rostliny) bez přijetí hodnot
UnaryOperatorUnaryOperatorPřijímá objekt T a vrací objekt T
BinaryOperatorBinaryOperatorPřijměte dva objekty T a vraťte objekty T


Rozhraní označené jako FunctionalInterface se nazývá funkční rozhraní, které může mít pouze jednu vlastní metodu, ale může zahrnovat metody zděděné z objektové třídy. Pokud má rozhraní pouze jednu metodu, kompilátor bude považovat za funkční rozhraní. Ať už jde o funkční rozhraní či nikoliv, je třeba poznamenat následující body:


  • Anotace může být na rozhraních označena pouze pomocí "Existuje pouze jedna abstraktní metoda".
  • Statické a výchozí metody v rozhraní JDK8 nejsou abstraktní metody.
  • Rozhraní ve výchozím nastavení dědí java.lang.Object, takže pokud rozhraní ukazuje, že deklarace přepisuje metodu v objektu, není považováno za abstraktní metodu.
  • Anotace není povinná a pokud rozhraní splňuje definici "funkčního rozhraní", nemá vliv na to, zda je anotace přidána nebo nikoliv. Navíc anotace umožňuje kompilátoru lépe kontrolovat. Pokud napíšete nefunkční rozhraní, ale přidáte @FunctionInterface, kompilátor nahlásí chybu.
  • Definování dvou vlastních metod v jednom rozhraní vede k neplatné anotaci '@FunctionalInterface'; FunctionalInterfaceTest není chyba funkčního rozhraní.


java.util.function Obsahuje několik tříd podporujících funkcionální programování v Javě a funkční rozhraní v tomto balíčku jsou:

sériové číslo
Rozhraní a popis
1BiConsumer<T,U>
Představuje akci, která přijímá dva vstupní parametry a nevrací žádné výsledky
2BiFunction<T,U,R>
Reprezentuje metodu, která přijímá dva vstupní parametry a vrací výsledek
3BinaryOperator<T>
představuje akci, která působí na dva operátory stejného typu a vrací výsledek stejného typu operátoru
4BiPredicate<T,U>
Reprezentuje dvouparametrovou booleovskou metodu
5BooleanSupplier
Představuje poskytovatele výsledku booleovské hodnoty
6Spotřebitel<T>
Reprezentuje operaci, která přijímá vstupní parametr a nic nevrací
7DoubleBinaryOperator
představuje akci, která působí na dva operátory s dvojnásobnou hodnotou, a vrací výsledek dvojnásobné hodnoty.
8DoubleConsumer
Reprezentuje akci, která přijímá parametr s dvojnásobnou hodnotou a nevrací výsledek.
9DoubleFunction<R>
Reprezentuje metodu, která přijímá parametr s dvojnásobnou hodnotou a vrací výsledek
10DoublePredikát
Reprezentuje metodu booleovské hodnoty s parametrem dvojnásobné hodnoty
11DoubleSupplier
Představuje poskytovatele struktury s dvojí hodnotou
12DoubleToIntFunction
Přijímá vstup s dvojitým typem a vrací výsledek typu int.
13DoubleToLongFunction
Přijímá vstup s dvojitým typem a vrací výsledek dlouhého typu
14DoubleUnaryOperator
Přijměme parametr stejného typu dvojnásobek a typ vrácené hodnoty je také dvojnásobný.
15Funkce<T,R>
Přijímá vstupní parametr a vrací výsledek.
16IntBinaryOperator
Přijměme oba parametry typu int a vraťte hodnotu typu int.
17IntConsumer
Přijímá vstupní parametr typu int bez návratové hodnoty.
18IntFunction<R>
Přijímá vstupní parametr typu int a vrací výsledek.
19IntPredikát
: Přijímá vstupní parametr int a vrací booleovský výsledek.
20IntSupplier
Žádné parametry, vrací výsledek typu int.
21IntToDoubleFunction
Přijímá vstup typu int a vrací výsledek s dvojitým typem.
22IntToLongFunction
Přijímá vstup typu int a vrací výsledek dlouhého typu.
23IntUnaryOperator
Přijměme parametr typu int a vraťme hodnotu typu int.
24LongBinaryOperator
Přijměme oba parametry typu long a vraťte hodnotu typu as long.
25LongConsumer
Přijměme vstupní parametr typu long bez vrácené hodnoty.
26LongFunction<R>
Přijímá vstupní parametr dlouhého typu a vrací výsledek.
27LongPredikát
R přijímá dlouhý vstupní parametr a vrací výsledek typu booleovského typu.
28LongSupplier
Bez parametru vrací výsledek typu long.
29LongToDoubleFunction
Přijímá vstup dlouhého typu a vrací výsledek s dvojitým typem.
30LongToIntFunction
Přijímá vstup dlouhého typu a vrací výsledek typu int.
31LongUnaryOperator
Přijměme parametr stejného typu jako long a vraťme hodnotu typu je také long.
32ObjDoubleConsumer<T>
Přijměme typ objektu a vstupní parametr s dvojitým typem bez vrácené hodnoty.
33ObjIntConsumer<T>
Přijmi vstupní parametry typu objektu a typu int bez vrácené hodnoty.
34ObjLongConsumer<T>
Přijímá vstupní parametry typu objektu a typu long bez vracení hodnot.
35Predikát<T>
Přijímá vstupní parametr a vrací Booleovský výsledek.
36Dodavatel<T>
Žádné parametry, vrací výsledek.
37ToDoubleBiFunction<T,U>
Přijímá dva vstupní parametry a vrací výsledek s dvojitým typem
38ToDoubleFunction<T>
Přijímá vstupní parametr a vrací výsledek s dvojitým typem
39ToIntBiFunction<T,U>
Přijměte dva vstupní parametry a vraťte výsledek typu int.
40ToIntFunction<T>
Přijměte vstupní parametr a vraťte výsledek typu int.
41ToLongBiFunction<T,U>
Přijměte dva vstupní parametry a vraťte výsledek dlouhého typu.
42ToLongFunction<T>
Přijměte vstupní parametr a vraťte výsledek dlouhého typu.
43UnaryOperator<T>
Přijměme parametr typu T a vraťte hodnotu typu T.


Funkční rozhraní v Javě je delegát v .NET/C#, předávají metodu jako parametr, následovně:

Úvod do C# delegátů (delegovat, akce, func, predikat)
https://www.itsvse.com/thread-4658-1-1.html

Funkce Běžné metody & postupy

//将Function对象应用到输入的参数上,然后返回计算结果。
R apply(T t);

Ačkoliv funkce < T, R > přijímat T objektů, vracet R objektů a pouze jeden objekt přijímat a vracet, ale v kombinaci s n-ticemi lze dosáhnout více příchozích a vracejících hodnot, viz následující:


Příklad 1: Předejte dvě hodnoty a sečtěte je

Můžete použít prosté písmo a lambda výrazy, kód je následující:





Příklad 2:

andThen metoda



Metoda kompozice



Plný kód



Výsledky návratu



(Konec)




Předchozí:Java řešení výjimek FeignClient Interface pro více identických názvů služeb
Další:maven projekt \target\classes\META-INF\MANIFEST. MF (systém...
Zveřejněno 19.09.2021 19:34:22 |
Java také vypadá, i když se nepoužívá
Zřeknutí se:
Veškerý software, programovací materiály nebo články publikované organizací Code Farmer Network slouží pouze k učení a výzkumu; Výše uvedený obsah nesmí být používán pro komerční ani nelegální účely, jinak nesou všechny důsledky uživatelé. Informace na tomto webu pocházejí z internetu a spory o autorská práva s tímto webem nesouvisí. Musíte výše uvedený obsah ze svého počítače zcela smazat do 24 hodin od stažení. Pokud se vám program líbí, podporujte prosím originální software, kupte si registraci a získejte lepší skutečné služby. Pokud dojde k jakémukoli porušení, kontaktujte nás prosím e-mailem.

Mail To:help@itsvse.com