Java でコンシューマ インターフェイスを使用するには?

Java Dekonshuma Intafeisuwo Shi Yongsuruniha



Javaでは、「 消費者 」インターフェイスは、単一の入力を受け取り、結果を返さずにそれに対して何らかのアクションを実行する操作を表します。また、ラムダ式などの関数プログラミングで利用できるカスタム操作を定義する柔軟な方法も提供します。このブログでは、Java での Consumer インターフェイスの実装について説明します。

Java でコンシューマ インターフェイスを使用するには?

消費者 」インターフェイスは、プログラム内のさまざまな場所で受け渡して実行できるカプセル化または動作を提供します。コードを複製することなく、さまざまな入力に適用できる再利用可能な動作を促進します。 Consumer インターフェイスは 2 つのメソッドで構成されます。 その後() ' と ' 受け入れる() ”。







両方の関数とコーデックの例を理解するには、以下の例を参照してください。



例 1: 「andThen()」メソッドの使用



開発者は複数の「」を連鎖させることができます。 消費者 」の操作をすべて「」を使用して実行できます。 その後() ' 方法。新しい「」が返されます。 消費者 現在の「」の操作を実行する「」 消費者 ' 実例。その後、次回/以降の操作を実行します。 消費者 ' 実例。 「」のプロセスで広く利用されているデフォルトの方法です。 構成 ”。





「」の構文 その後() ” メソッドを以下に挿入します。

その後 ( 消費者 < ?スーパーT >



その後() 「現在の消費者を組み合わせる方法」 素晴らしい 「別の消費者と」 ”。そして、最初に現在のコンシューマの操作を実行し、続いて提供されたコンシューマの操作を実行します。

理解を深めるためにプログラムを見てみましょう。

java.util.ArrayListをインポートします。
java.util.LinkedListをインポートします。
java.util.Listをインポートします。
インポート java.util.function.Consumer;

パブリッククラスのルート {
パブリック静的ボイドメイン ( 文字列引数 [ ]
{
// mainメソッドの作成
消費者 < リスト < 整数 > > 乗算 = データエレ - >
{
ために ( int j = 0 ; j < dataEle.size ( ; j++ {
dataEle.set ( j、 5 * dataEle.get ( j ;
}
} ;
// 整数のリストを表示するコンシューマ
消費者 < リスト < 整数 > >
プリント = データエレ - > dataEle.stream ( .forEach ( k - > システム出力印刷 ( k+ 「」 ;

リスト < 整数 > dataEle = 新しい ArrayList < 整数 > ( ;
dataEle.add ( 4 ;
dataEle.add ( 7 ;
dataEle.add ( 12 ;
dataEle.add ( 16 ;
乗算してから ( プリント 。受け入れる ( データエレ ;
}
}

上記のコードの説明:

  • まず、「 消費者 ”、” リンクリスト 」および関連ユーティリティが Java ファイルにインポートされます。その後、「」という名前のメインクラスが追加されます。 ' 創造された。
  • 次に、「Consumer」という名前の List タイプの「Consumer」インターフェイスを作成します。 かける ” と同じ値に設定します。 配列リスト 」を以下で作成していきます。
  • それは「」を利用します ために ” の長さになるまで繰り返すループ 配列リスト 「」という名前 データエレ 」の各データ要素を乗算します。 データエレ ' と ' 5 ”。
  • その後、2回目の「 消費者 」 ストリームから乗算処理後に取得した各要素をコンソールに出力するインターフェースが作成されます。
  • ここで、「」にダミーのデータ要素を作成して追加します。 データエレ ' 配列リスト。
  • 結局のところ、「 その後() ” メソッドは、” で呼び出されます。 受け入れる() ”を受け付けるメソッド” データエレ ” ArrayList を返し、” の結果を返します。 かける ' 順番通りに。

実行フェーズの終了後:

スナップショットは、「」を利用して乗算タスクが完了したことを示しています。 その後() ”の方法” 消費者 ' インターフェース。

例 2: 「accept()」メソッドの使用

受け入れる() ”メソッドは”の関数メソッドです。 消費者 ' インターフェース。タイプ「」の単一の引数を受け入れます。 T 」を選択し、それに対して指定された/必要な操作を実行します。 「」の価値 ヌル 「」は受け入れられないため、提供しないでください。 ヌル ” 値を指定し、例外を生成します。

その構文を以下に示します。

無効な受け入れ ( < 強い > T 強い > t

上記の構文では、「 t 」は、特定の操作が実行される単一の引数です。

より深く理解するために、以下のコード ブロックにアクセスしてみましょう。

java.util.ArrayListをインポートします。
java.util.LinkedListをインポートします。
java.util.Listをインポートします。
インポート java.util.function.Consumer;

// ユーティリティのインポート ジャワ ファイル
パブリッククラスのルート {
パブリック静的ボイドメイン ( 文字列引数 [ ] // mainメソッドの作成
{
消費者 < 整数 > disp = k - > System.out.println ( k ;
表示、受け入れ ( 255 ;
消費者 < リスト < 整数 > > 乗算 = データエレ - >
{
ために ( int k = 0 ; k < dataEle.size ( ; k++
dataEle.set ( k、 5 * dataEle.get ( k ;
} ;

消費者 < リスト < 整数 > >
プリント = データエレ - > dataEle.stream ( ) .forEach ( j - > システム出力印刷 ( j+
) ) ;
リスト < 整数 > dataEle = 新しい ArrayList < 整数 > ( ) ;
dataEle.add ( 4 ) ;
dataEle.add ( 7 ) ;
dataEle.add ( 12 ) ;
dataEle.add ( 16 ) ;
// acceptを使用してmodifyを実装する ( )
乗算、受け入れ ( データエレ ) ;
// acceptを使用してdispListを実装する ( )
プリント.受け入れます ( データエレ ) ;
}
}

上記のコードの説明:

  • まず、「 消費者 「」という名前のインターフェース ディスプ 何も操作せずに、提供されたパラメータをコンソールに表示する「」が作成されます。
  • さて、「 受け入れる() ” メソッドは、” によって呼び出されます。 ディスプ 「消費者とその価値」 255 ”がこのメソッドに渡されます。
  • 次に、もう一つ「 消費者 」インターフェイスが作成され、「 ために ” という名前の ArrayList の常駐要素ごとに乗算を適用するループ データエレ ”。
  • その後、もう 1 つ「」を作成します。 消費者 ” インターフェイスを使用して、” データエレ 」要素は、ストリームからの乗算を適用した後に生成されます。
  • 次に、ArrayList を初期化します。 データエレ 」をダミーのデータ要素とともに使用し、「 受け入れる() ” を使用したメソッド かける ' インターフェース。
  • 最後に、「」に電話します。 受け入れる() 」を使用した方法 プリント 」インターフェイスを使用して、乗算を適用した後の結果をコンソール ログに表示します。

実行終了後:

上記のスナップショットは、複数のコンシューマ インターフェイスが「 受け入れる() ' 方法。

例 3: After 関数の例外処理

例外が発生するのは、「 「」の機能 その後() ” メソッドには” が含まれています 受け入れる() ' 方法。これにより、以下に示すように、Consumer インターフェイス メソッドを使用してインターフェイスによって処理されるデータを保持するインターフェイスが作成されます。

java.util.ArrayListをインポートします。
java.util.LinkedListをインポートします。
java.util.Listをインポートします。
インポート java.util.function.Consumer;

パブリッククラスのルート {
パブリック静的ボイドメイン ( 文字列引数 [ ] )
{
消費者 < リスト < 整数 > > かける = データエレ - >
{
ために ( int j = 0 ; j < = dataEle.size ( ) ; j++ )
dataEle.set ( j、 5 * dataEle.get ( j ) ) ;
} ;
// 整数のリストを表示するコンシューマ
消費者 < リスト < 整数 > >
印刷する = データエレ - > dataEle.stream ( ) .forEach ( 私 - > システム出力印刷 ( 私 + 「」 ) ) ;
リスト < 整数 > dataEle = 新しい ArrayList < 整数 > ( ) ;
dataEle.add ( 4 ) ;
dataEle.add ( 7 ) ;
dataEle.add ( 12 ) ;
dataEle.add ( 16 ) ;
試す {
印刷してから ( かける ) 。受け入れる ( データエレ ) ;
}
キャッチ ( 例外 e ) {
System.out.println ( '例外: ' +と ) ;
}
}
}

上記のコード ブロックの説明:

  • まず、「 消費者 ” インターフェースが作成され、単純に複数の” 5 」は、提供された ArrayList に存在するデータ要素を含む整数です。
  • 続いて2つ目の「 消費者 」インターフェースは、ストリームによって受信された ArrayList の各データ要素を表示するために作成されます。
  • その後、ArrayList が作成され、ダミーの整数型の値で初期化されます。
  • そうして ' 試す ” ブロックが利用されており、” その後() ” メソッドは、” によって呼び出されます。 印刷する ' インターフェース。
  • それは「」を引き起こします IndexOutOfBoundsException ' なぜなら ' ために 「ループの反復制限を超えました。これは「」によって解決されます。 キャッチ ' ブロック。

実行フェーズの終了後:

スナップショットは、コンパイラによって IndexOutOfBoundsException が生成されたことを示しています。

結論

消費者 」インターフェイスは、再利用可能な動作を定義し、結果を返さずに入力データに対してアクションを実行する方法を提供します。で構成されています。 受け入れる() ' と ' その後() 」の方法です。これは、ユーザーがコレクションまたはストリームの各要素に対してアクションを実行する必要があるデータ処理タスクによく使用されます。 Java での Consumer インターフェイスの使用法と実装については以上です。