8

標準演算子 (+、-、​​<、>、...) のメソッド参照を取得するために、Java 8 に可能性があるかどうか疑問に思いました。

Foo::+Foo がそれを取得できる定義された場所であるような場所に取得したい。Java ではメソッド名に特殊文字を使用できないため、可能ではないと思います。

上記の方法が存在しない場合: のように標準演算子が定義されている場所はありFoo::plusますか?

これを lambda( (x, y) -> x + y) として定義する可能性があることは知っていますが、私の意見では、Haskell で可能なように、演算子へのメソッド参照を使用すると、場合によってはより表現力豊かになる可能性があります。

4

3 に答える 3

7

int Integer.sum(int, int)実際に API によって提供される同様のメソッドを探していると思います。

あなたのリストには欠けているメソッドがたくさんありますが、それらがなくてもそのサイズが巨大であるため、JDK が最後の 1 インチの利便性を提供しないのはよくあることです。

それが慰めになる場合は、私のプロジェクトのそれぞれに、Utilこれらのようなちょっとしたことをダンプするクラスがあります。

于 2014-07-17T11:22:02.287 に答える
1

クリーンな方法はOperators、すべての演算子のメソッドを含むヘルパー クラスです。次に、これらのメソッドを参照として使用できます。もちろん、標準ライブラリ クラスは独自のヘルパー クラスよりも優れていますが、少なくともそのヘルパー クラスの名前は自分で決めることができるので、自分にとって最も表現力のある名前を選ぶことができます。

于 2014-07-17T11:28:18.220 に答える
0

標準の演算子は、プリミティブとボックス化されたプリミティブにのみ適用され、問題のオブジェクトに適用可能な演算子を動的に見つけることはできません。

編集:標準の演算子関数を実行するために呼び出すことができるメソッドを知りたい場合は、同等の演算子に対して同等のインターフェイスに対して instanceof チェックを実行できます( http://docs.oracle.com/javase/ 8/docs/api/java/lang/Comparable.html )。

于 2014-07-17T11:23:51.797 に答える