Java 8でこのようなことを行うにはどうすればよいですか?
boolean x = ((boolean p)->{return p;}).apply(true);
現在、次のエラーが表示されます。
この式の対象の型は関数型インターフェイスでなければなりません
Java 8でこのようなことを行うにはどうすればよいですか?
boolean x = ((boolean p)->{return p;}).apply(true);
現在、次のエラーが表示されます。
この式の対象の型は関数型インターフェイスでなければなりません
JLSセクション15.27に従って:
代入コンテキスト (§5.2)、呼び出しコンテキスト (§5.3)、またはキャスト コンテキスト (§5.5) 以外の場所でプログラム内にラムダ式が発生すると、コンパイル時エラーになります。
return
ステートメントでラムダ式を使用することもできます。
次に、4 つの異なる方法で例を書き直すことができます。
割り当てコンテキストを作成することにより:
Function<Boolean, Boolean> function = p -> p;
boolean x = function.apply(true);
呼び出しコンテキストを作成することにより:
foobar(p -> p);
private static void foobar(Function<Boolean, Boolean> function) {
boolean x = function.apply(true);
}
キャストコンテキストを作成することにより:
boolean x = ((Function<Boolean, Boolean>) p -> p).apply(true);
return
ステートメントの使用:
boolean x = function().apply(true);
private static Function<Boolean, Boolean> function() {
return p -> p;
}
また、この単純な例では、ラムダ式全体を次のように書き換えることができます。
UnaryOperator<Boolean> function = UnaryOperator.identity();