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