5

現在、このプロジェクトに取り組んでいます。驚くほどうまく機能します。

しかし、もう一度 README を読み直した後、私を悩ませている何かを文書化する方法について疑問に思うようになりました...

例を引用すると、例外がスローされる可能性があることを少し忘れると、次のようになります。

Files.list(somePath).map(Path::toRealPath).forEach(System.out::println)

わかった。さて、Path絡み方はこちら。もちろん、 は渡しませんLinkOption

繰り返しますが、例外がスローされることを少し忘れましょう。

Streamは引数として.map()aを取ります。Functionのこのインターフェイスは、次のFunction<T, R>ように定義されます。

R apply(T t);

しかし、私が使用しているメソッドは引数を受け入れません。一見、 a と一致しないように見えFunctionますよね?それ以外で...

次のように記述できます。

path -> path.toRealPath()

したがって、メソッド参照に引数がない場合、またはそのようなものがある場合、使用されるメカニズムは「ストリームオブジェクト」でメソッドを呼び出すことができるように見えます...

それに応じてこれを文書化したいのですが、ここに何かが欠けています。

私は何が欠けていますか?

4

1 に答える 1

3

非静的メソッドには、レシーバー ( this) オブジェクトが暗黙の最初の引数として含まれます。したがって、Class::nonStaticMethod予想よりも 1 つ多くの引数があります。

Java 言語仕様セクション 15.13.1、メソッド参照のコンパイル時宣言:

  • 次に、n 個のパラメーターを持つ対象となる関数の型が与えられると、適用可能な一連のメソッドが識別されます。

    • メソッド参照式の形式がReferenceType :: [TypeArguments] Identifierの場合、潜在的に適用可能なメソッドは、適切な名前 ( Identifierで指定)、アクセシビリティ、アリティ ( nまたはn-1 )、および§15.12.2.1 で指定されている型引数アリティ ( [TypeArguments]から派生)。

      staticこの形式がメソッドまたはインスタンス メソッドのいずれかを参照する可能性を考慮して、2 つの異なるアリティ n と n-1 が考慮されます。

于 2014-12-24T06:34:48.807 に答える