ホームページ > Java > &#&チュートリアル > 戻り値の型を持つメソッド参照で Java のコンシューマ インターフェイスを実装できるのはなぜですか?

戻り値の型を持つメソッド参照で Java のコンシューマ インターフェイスを実装できるのはなぜですか?

Linda Hamilton
リリース: 2024-11-22 10:25:12
オリジナル
282 人が閲覧しました

Why Can Method References with Return Types Implement the Consumer Interface in Java?

戻り値の型を持つメソッド参照がコンシューマ インターフェイスと一致する理由

Java では、メソッド参照を使用して関数インターフェイスを作成できます。たとえば、Consumer インターフェイスは 1 つの引数を受け取り、それに対してアクションを実行します。驚くべきことに、戻り値の型を持つメソッド参照も Consumer インターフェイスに一致させることができます。

この動作を許可する決定は、メソッドの呼び出し方法と同様の方法でメソッドを関数型インターフェイスに適応させるという考えに基づいています。具体的には、戻り値が無視される場合でも、値を返すメソッドはすべて Consumer インターフェイスに適合させることができます。

ラムダ式に関しては、次の 2 つの形式があります。式と (引数) -> { ステートメント* }。後者の形式は、コード パスが値を返そうとしない場合、void と互換性があります。前者の形式は、式が値に評価される場合、値互換です。ただし、式がステートメントでもある場合 (メソッド呼び出しやインクリメント/デクリメント演算子など)、void 互換にすることができます。

たとえば、式 s -> s は値互換ですが、 s -> は値互換です。 i は void 互換です。これは、インクリメント/デクリメント演算子を単独でステートメントとして使用できるためです。もう 1 つの void 互換式は s -> です。 new Whatever(s) は、クラス インスタンス作成式としてステートメントとしても使用できます。

興味深いことに、(arg) -> methodReturningVoid(arg) は、値の互換性がない唯一の式形式です。

以上が戻り値の型を持つメソッド参照で Java のコンシューマ インターフェイスを実装できるのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート