この記事は機械翻訳のミラー記事です。元の記事にジャンプするにはこちらをクリックしてください。

眺める: 24226|答える: 1

[出典] Javaにおける一般的な関数インターフェース(デリゲート)の詳細な説明

[リンクをコピー]
掲載地 2021/09/16 9:28:21 | | | |
JDK 1.8 APIには、ComparatorやRunnableインターフェースなど、古いJavaでよく使われている多くの組み込み機能インターフェースが含まれており、これらは@FunctionalInterface注釈を追加してラムダ上で使用できるようにしています。 では、関数の共通関数の登場から本格的に理解しましょう。

名前種類形容
消費者消費者<T >T個のオブジェクトを受け取りますが、値を返しません
述語述語<T >Tオブジェクトを受け取り、ブール値を返します
機能機能<T、R >Tオブジェクトを受け取り、Rオブジェクトを返します
サプライヤーサプライヤー<T>Tオブジェクト(例:植物)を値を受け付けずに提供する
ユニナリオペレーターユニナリオペレーターTオブジェクトを受け取り、Tオブジェクトを返します。
バイナリオペレーターバイナリオペレーター2つのTオブジェクトを受け取り、Tオブジェクトを返します


FunctionalInterfaceとラベル付けされたインターフェースは関数型インターフェースと呼ばれ、カスタムメソッドは1つしか持つことができませんが、オブジェクトクラスから継承したメソッドを含めることができます。 インターフェースにメソッドが1つしかない場合、コンパイラはそれを関数型インターフェースとみなします。 機能的なインターフェースかどうかにかかわらず、以下の点に注意が必要です。


  • 注釈は「抽象的な方法は一つだけ」と表示されるインターフェースでのみマークできます。
  • JDK8インターフェースの静的およびデフォルトメソッドは抽象メソッドではありません。
  • インターフェースはデフォルトでjava.lang.Objectを継承するため、宣言がオブジェクト内のメソッドを上書きしていることを示した場合、それは抽象メソッドとはみなされません。
  • 注釈は必須ではなく、インターフェースが「関数的インターフェース」の定義を満たしていれば、注釈が追加されるかどうかは影響しません。 さらに、注釈はコンパイラのチェック精度を高めます。 非機能インターフェースを書いても@FunctionInterfaceを追加すると、コンパイラはエラーを報告します。
  • 1つのインターフェースで2つのカスタムメソッドを定義すると、無効な「@FunctionalInterface」注釈が生成されます。 FunctionalInterfaceTestは機能インターフェースエラーではありません。


java.util.function Javaの関数型プログラミングをサポートする複数のクラスが含まれており、このパッケージの関数型インターフェースは以下の通りです:

シリアルナンバー
インターフェースと説明
1BiConsumer<T,U>
2つの入力パラメータを受け入れ、結果を返さないアクションを表します
2BiFunction<T,U,R>
2つの入力パラメータを受け取り、結果を返すメソッドを表します
3バイナリオペレーター<T>
は同じ種類の演算子2つに作用し、同じ種類の演算子の結果を返すアクションを表します
4バイプレディケート<T,U>
2パラメータブール値メソッドを表します
5ブーリーンサプライヤー
ブール値の結果の提供者を表します
6消費者<T>
入力パラメータを受け入れ、何も返さない演算を表します
7ダブルバイナリオペレーター
は2つの二重値演算子に作用し、二重値の結果を返す行動を表します。
8ダブルコンシューマー
ダブルバリューパラメータを受け入れ、結果を返さないアクションを表します。
9ダブルファンクション<R>
は二重値のパラメータを受け入れ、結果を返すメソッドを表します
10ダブル述語
ダブル値パラメータを持つブール値メソッドを表します
11ダブルサバイダ
ダブルバリュー構造の提供者を表します
12DoubleToIntFunction
ダブル型入力を受け入れ、int型の結果を返します。
13DoubleToLongFunction
ダブル型入力を受け入れ、長型の結果を返します
14DoubleUnaryOperator
同じ型のパラメータをダブルとすると、返り値の型もダブルになります。
15Function<T,R>
入力パラメータを受け入れ、結果を返します。
16IntBinaryOperator
型intと返す値型intの両方のパラメータを受け入れます。
17IntConsumer
返り値のない型intの入力パラメータを受け入れます。
18IntFunction(全関数<R>)
int型の入力パラメータを受け取り、結果を返します。
19IntPredicate
: は整数入力パラメータを受け入れ、ブール結果を返します。
20IntSupplier
パラメータなし、int型の結果を返します。
21IntToDouble関数
int型入力を受け入れ、ダブル型の結果を返します。
22IntToLongFunction
int型入力を受け付け、長型結果を返します。
23IntUnaryOperator
型intのパラメータを受け入れ、値型もintを返します。
24ロングバイナリオペレーター
型の長いパラメータと返り値型の両方を受け入れます。
25ロングコンシューマー
返り値のないlong型の入力パラメータを受け入れます。
26ロングファンクション<R>
長型入力パラメータを受け入れ、結果を返します。
27ロング述語
Rは長い入力パラメータを受け入れ、ブール型の結果を返します。
28ロングサバイサー
パラメータなし、型はlongの結果を返します。
29LongToDoubleFunction
長型入力を受け付け、ダブル型結果を返します。
30LongToIntFunction
長い型入力を受け入れ、int型の結果を返します。
31LongUnaryOperator
同じ型のパラメータをlongとして受け入れ、型の値もlongを返します。
32ObjDoubleConsumer<T>
オブジェクト型とダブル型の入力パラメータを受け入れ、返り値はなし。
33ObjIntConsumer<T>
入力パラメータは type object と type int を受け入れ、返却値はありません。
34ObjLongConsumer<T>
値を返さずに、オブジェクト型と型長の入力パラメータを受け入れます。
35述語<T>
入力パラメータを受け入れ、ブール結果を返します。
36サプライヤー<T>
パラメータは使わず、結果が返されます。
37ToDoubleBiFunction<T,U>
2つの入力パラメータを受け入れ、ダブル型の結果を返します
38ToDoubleFunction<T>
入力パラメータを受け入れ、ダブル型の結果を返します
39ToIntBiFunction<T,U>
2つの入力パラメータを受け入れ、int型の結果を返します。
40ToIntFunction<T>
入力パラメータを受け入れ、int型の結果を返します。
41ToLongBiFunction<T,U>
2つの入力パラメータを受け入れ、長型の結果を返します。
42ToLongFunction<T>
入力パラメータを受け入れ、長い型の結果を返します。
43ユニナリオペレーター<T>
型 T のパラメータを受け入れ、その値を返します。


Javaの関数インターフェースは.NET/C#の代理です、メソッドをパラメータとして渡します。以下のように:

C#代理(delegate、Action、Func、述語)への入門
https://www.itsvse.com/thread-4658-1-1.html

機能共通の手法と実践

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

Function< T、R > Tのオブジェクトを受け取り、Rのオブジェクトを返し、受信・返却オブジェクトは1つだけですが、タプルと組み合わせることで複数の入値と返値が可能です。以下を参照してください:

ジャワにおけるタプルの使用
https://www.itsvse.com/thread-10055-1-1.html

例1:2つの値を渡して合計します

平易な書き方とラムダ式を使えば、コードは以下の通りです:





例2:

andThen 法



コンポジションメソッド



フルコード



結果



(終わり)




先の:複数の同一サービス名に対するJava FeignClient Interface例外ソリューション
次に:MAVEN プロジェクト \target\classes\META-INF\MANIFEST。 MF(システム...
掲載地 2021/09/19 19:34:22 |
Javaも探しましたが、実際には使われていません
免責事項:
Code Farmer Networkが発行するすべてのソフトウェア、プログラミング資料、記事は学習および研究目的のみを目的としています。 上記の内容は商業的または違法な目的で使用されてはならず、そうでなければ利用者はすべての結果を負うことになります。 このサイトの情報はインターネットからのものであり、著作権紛争はこのサイトとは関係ありません。 ダウンロード後24時間以内に上記の内容を完全にパソコンから削除してください。 もしこのプログラムを気に入ったら、正規のソフトウェアを支持し、登録を購入し、より良い本物のサービスを受けてください。 もし侵害があれば、メールでご連絡ください。

Mail To:help@itsvse.com