私はJava 8 featuresについて読んでいましたが、メソッド参照があることがわかりましたが、メソッドがオーバーロードされているときにどのメソッドを指定するのかわかりませんでした。誰か知っていますか?空でない引数のメソッド参照?
13
A
答えて
5
:
は、ラムダ式を使用することができますか?ターゲット・タイプが 適切なパラメータのタイプであるため
メソッドやコンストラクタ引数。メソッドまたはコンストラクタがオーバーロードされている場合、ラムダ の式がターゲットタイプと一致する前に、 オーバーロード解決の通常のメカニズムが使用されます。 (過負荷の解決の後に、 )複数のマッチング方法またはコンストラクタが同じ 機能記述子を持つ異なる機能インターフェイスを受け入れることができる場合、ラムダ式は である必要があります。 ;
明示的にターゲットタイプを提供するキャスト式。たとえば、次のように
Object o =() -> { System.out.println("hi"); }; // Illegal: could be Runnable or Callable (amongst others)
Object o = (Runnable)() -> { System.out.println("hi"); }; // Legal because disambiguated
だから、あなたがあいまいな署名がある場合は、それをキャストする必要があります。
6
コンパイラはメソッドシグニチャと機能インターフェイスを一致させます。
Integer foo(){...}
Integer foo(Number x){...}
Supplier<Number> f1 = this::foo; //()->Number, matching the 1st foo
Function<Integer, Number> f2 = this::foo; // Int->Number, matching the 2nd foo
基本的に、f2
はInteger
を受け入れ、Number
を返すことができるものである、コンパイラは、第二foo()
が要件を満たしていることを知ることができます。 this Lambda FAQから
関連する問題
- 1. Instanceメソッド参照インスタンス引数の場合
- 2. '#selector'の引数が '@objc'メソッドを参照していません
- 3. 再帰的なデフォルトの引数参照
- 4. メソッドのパラメータ/引数をメソッド参照に渡す - bind、anonymous、という名前の
- 5. 2つの引数のメソッド参照に関する混乱
- 6. スカラマクロ:関数参照の引数型
- 7. 参照引数を使ってpythonメソッドを呼び出す
- 8. は参照で引数を渡すと
- 9. '#selector'の引数がイニシャライザまたはメソッドを参照していません
- 10. ポリモーフィックメソッドのオプションの引数(参照)?
- 11. Deviseの円引数の参照
- 12. 引数がconst参照の場合、他のクラスのメソッド内部でのメソッドの使い方
- 13. 引数としての自己参照
- 14. C++のconstベクトル参照引数
- 15. 参照渡しの引数Java
- 16. IntelliTraceの引数リファレンスによる参照
- 17. Cでメソッド内の引数として参照を渡す方法#
- 18. SONAR:メソッド参照
- 19. メソッド参照のパラメータ
- 20. java8:別のメソッド参照からのメソッド参照
- 21. AS3 - 引数への参照は、それは悪いですか?
- 22. 逆引き参照
- 23. get-WMIObjectメソッドとinterrogateserviceメソッドでの変数参照の使用
- 24. 関数の引数で配列を参照する方法
- 25. 関数の引数で渡されるオブジェクト参照
- 26. メソッドと参照オーバーフロー
- 27. ACE Editor:名前付き引数への参照ではない式
- 28. ジェネリック型インデックスへの参照必要な引数 - Algolia Search、Swift 3
- 29. Rubyのクラスのメソッド参照
- 30. ビジュアルスタジオの参照で空のリスト
ラムダ式は機能的インタフェースの略語であるため、メソッドの型はインタフェースのメソッドから推測可能でなければなりません。 –
@LeonardBrünings:これはラムダ式ではなく、異なるメソッド参照です。ラムダ式は関数の実装です。メソッド参照は、既存のクラスからの既存のメソッドへの参照です。 –
@LouisWassermanリンク先の記事によると、メソッド参照はラムダ、つまり私のタグとして実装されます。 – ArtB