私はJava8ラムダ式の構文を理解していますが、xの特定の型宣言なしで次のコードが機能するのはなぜですか? 「バズ」はなぜ印刷されていますか?型なしのラムダ式
public class LambdaExpressions {
interface Foo {
void bar(Object o);
}
static void doo(Foo f) {
f.bar("baz");
}
public static void main(String[] args) {
doo(x -> {System.out.println(x);});
}
}
@ cricket_007なぜ 'x'が魔法の' Foo'タイプなのか、 'System.out.println(x)'(より具体的にはラムダ)の呼び出しが 'Foo .bar'。 – Qix
型は、lambdaが実装しようとしている関数インタフェースメソッドで指定されているので簡単に推論できます。したがって、型を明示的に宣言する必要はありません。 – Pshemo
'System.out.println'は' Foo'が 'Consumer