Java 8 には「メソッド参照」機能があります。その種類の 1 つは、「特定の型の任意のオブジェクトのインスタンス メソッドへの参照」です。
http://docs.oracle.com/javase/tutorial/java/javaOO/methodreferences.html#type
誰かがそのコンテキストで「特定のタイプの任意のオブジェクト」が何を意味するのか説明できますか?
Java 8 には「メソッド参照」機能があります。その種類の 1 つは、「特定の型の任意のオブジェクトのインスタンス メソッドへの参照」です。
http://docs.oracle.com/javase/tutorial/java/javaOO/methodreferences.html#type
誰かがそのコンテキストで「特定のタイプの任意のオブジェクト」が何を意味するのか説明できますか?
リンクされたOracle Docからの例は次のとおりです。
String[] stringArray = { "Barbara", "James", "Mary", "John", "Patricia", "Robert", "Michael", "Linda" };
Arrays.sort(stringArray, String::compareToIgnoreCase);
に相当するラムダ
String::compareToIgnoreCase
だろう
(String a, String b) -> a.compareToIgnoreCase(b)
このArrays.sort()
メソッドは、2 番目の引数としてコンパレーターを探します (この例では)。渡すと、compare メソッドの本体としてを使用String::compareToIgnoreCase
してコンパレータが作成されます。次に、 と は何かをa.compareToIgnoreCase(b)
よく尋ねます。compare メソッドの最初の引数は になり、2 番目の引数は になります。これらは String 型 (特定の型) の任意のオブジェクトです。a
b
a
b
わからない?
ソースで詳細を読む: http://moandjiezana.com/blog/2014/understanding-method-references/
この場合、特定の型 (文字列) のオブジェクトの配列があり、配列内の任意のランダム オブジェクトはそのインスタンス メソッドを呼び出すことができます。このアプローチにより、クラスはそのインスタンス メソッドを静的メソッドであるかのように参照できます。
また、このアプローチは String のような Java の組み込みクラスでのみ機能しますが、ユーザー定義のクラスでは機能しません。ユーザー定義クラスの場合、インスタンス メソッドはそのオブジェクトによってのみ参照できます。