29

Java 8 には「メソッド参照」機能があります。その種類の 1 つは、「特定の型の任意のオブジェクトのインスタンス メソッドへの参照」です。

http://docs.oracle.com/javase/tutorial/java/javaOO/methodreferences.html#type

誰かがそのコンテキストで「特定のタイプの任意のオブジェクト」が何を意味するのか説明できますか?

4

7 に答える 7

28

リンクされた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 型 (特定の型) の任意のオブジェクトです。abab

わからない?

  • コンパレータとは何か、およびその実装方法を理解していることを確認してください。
  • 関数型インターフェースとは何か、Java のラムダにどのように影響するかを理解します。
  • コンパレーターは機能的なインターフェイスであるため、メソッド参照はコンパレーター オブジェクト内の比較メソッドの本体になります。
  • ページの下部にある別の例については、以下のソースを参照してください。

ソースで詳細を読む: http://moandjiezana.com/blog/2014/understanding-method-references/

于 2014-09-03T00:28:22.750 に答える
-1

この場合、特定の型 (文字列) のオブジェクトの配列があり、配列内の任意のランダム オブジェクトはそのインスタンス メソッドを呼び出すことができます。このアプローチにより、クラスはそのインスタンス メソッドを静的メソッドであるかのように参照できます。

また、このアプローチは String のような Java の組み込みクラスでのみ機能しますが、ユーザー定義のクラスでは機能しません。ユーザー定義クラスの場合、インスタンス メソッドはそのオブジェクトによってのみ参照できます。

于 2018-04-30T13:05:11.880 に答える