回答:
これは、クラスにメソッドと同じ名前の(静的)メンバーがある場合にあいまいさを回避するためです(Javaではそれを許可しています)。
メソッド参照に関するJavaチュートリアルのコードスニペットから簡単に確認できます。
このラムダ式は既存のメソッドを呼び出すため、ラムダ式の代わりにメソッド参照を使用できます。
Arrays.sort(rosterAsArray, Person::compareByAge);
Person
上記のスニペットのクラスにcompareByAge
(に渡すのに適切なタイプの)という名前のメンバーもある場合Arrays.sort
、ドット表記では、パラメーターがメソッドまたはメンバーを参照しているかどうかを判別できません。
動作が同じでないため、新しい構文が導入されました。
.
あなたがするために、機能上の参照を取得したいということを意味起動直後にそれを。
メソッド参照(::
)を使用する場合、関数への参照を保存したいが、すぐに呼び出したくない場合。
より実用的な側面は、パブリック属性と同じ名前のメソッドをどのように区別するの.
ですか?できません。と::
曖昧さはありません。