1. ホーム
  2. java-8

[解決済み】この式の対象型は、MethodReferencesの機能インターフェイスでなければならない

2022-02-18 07:38:12

質問

以下のコードがコンパイルされないのはなぜですか?

Consumer con = (s) -> System.out::println;

と書かれています。

この式のターゲット型は関数型インターフェースでなければならない

はFunctional Interfaceであるにもかかわらず、Consumerは 下記は正常に動作します。

Consumer con2 = (s) -> {System.out.println(s);};

解決するには?

メソッドの参照なので、使い方が少し違いますね。

 Consumer<String> c = System.out::println;

コンシューマが取る引数( s) に渡されます。 println メソッドを使用します。

こちら は、Oracleのチュートリアルです。