2017-02-03 6 views

答えて

2

Foo::getNamegetNameは、その署名に空のパラメータリストを持つインスタンスメソッドであり、その後の効果は、インスタンスの「目標基準」として、そのパラメータを使用するクラス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つのメソッドを宣言する場合に発生します。

関連する問題