0
私はこのラムダこのラムダ(Foo foo) - > foo.getName()を簡略化するメソッド参照はどれですか?
(Foo foo) -> foo.getName()
それを書くために、任意のより良い方法を簡素化するためにどのように頼まれましたか?
私はこのラムダこのラムダ(Foo foo) - > foo.getName()を簡略化するメソッド参照はどれですか?
(Foo foo) -> foo.getName()
それを書くために、任意のより良い方法を簡素化するためにどのように頼まれましたか?
Foo::getName
。 getName
は、その署名に空のパラメータリストを持つインスタンスメソッドであり、その後の効果は、インスタンスの「目標基準」として、そのパラメータを使用するクラスFoo
のパラメータと匿名メソッドを作成することであると仮定すると
メソッド呼び出し、つまりメソッド呼び出しが適用されるオブジェクトつまり、メソッドを作成します。
return-type anonymousMethod(Foo arg) {
return arg.getName();
}
これはまさに(Foo foo) -> foo.getName();
です。
一方、この方法参照:
abc::getName()
はabc
がラムダの外部で定義されabc.getName()
を返しないパラメータと匿名メソッドを作成します。
編集:私はこの答えが完全ではないことを認識しました。 (Foo foo) -> foo.getName()
がにはできない場合があります。Foo::getName
に簡略化されています。
public String getName() { ... }
public static String getName(Foo foo) { ... }
今すぐ
Foo::getName
が
(Foo foo) -> foo.getName()
は、あいまいな(したがって違法)ではありませんされている間:
Foo
は次のようになり2つのメソッドを宣言する場合に発生します。
'Foo :: getName'? – nullpointer
'foo-> foo.getName()' –
両方の答えは正しいですか? – Arefe