Java 8: Erhalte Operator-Function-Object mit Methodenreferenz

8

Ich habe mich gefragt, ob es in Java 8 die Möglichkeit gibt, die Methodenreferenzen der Standardoperatoren (+, -, & lt ;, & gt ;, ...) zu erhalten.

Ich möchte es wie Foo::+ bekommen, wo Foo ein definierter Ort ist, wo ich es bekommen kann. Da Java keine Sonderzeichen in Methodennamen erlaubt, glaube ich nicht, dass es möglich ist, oder?

Wenn der obige Weg nicht existiert: Gibt es eine Stelle, wo die Standardoperatoren wie Foo::plus definiert sind?

Ich weiß, dass es die Möglichkeit gibt, es als Lambda ( (x, y) -> x + y ) zu definieren, aber meiner Meinung nach könnte es in einigen Fällen mit einer Methodenreferenz zum Operator, wie es in Haskell möglich ist, ausdrucksvoller sein.

    
F. Böller 17.07.2014, 11:08
quelle

3 Antworten

7

Ich glaube, Sie suchen int Integer.sum(int, int) und ähnliche Methoden, die tatsächlich von der API bereitgestellt werden.

Es gibt viele Methoden aus Ihrer Liste, aber es ist üblich, dass das JDK nicht den letzten Zentimeter an Bequemlichkeit bietet, da seine Größe auch ohne diese enorm ist.

Wenn das Trost ist, hat jedes meiner Projekte eine Util -Klasse, in der ich Leckerbissen wie diese ablege.

    
Marko Topolnik 17.07.2014, 11:22
quelle
1

Ein sauberer Weg wäre eine Helferklasse Operators , die Methoden für alle Operatoren enthält. Dann könnten Sie diese Methoden als Referenzen verwenden. Natürlich wäre eine Standardbibliotheksklasse schöner als eine eigene Hilfsklasse, aber Sie können zumindest den Namen dieser Hilfsklasse bestimmen, sodass Sie einen Namen auswählen können, der für Sie am aussagekräftigsten ist.

    
gexicide 17.07.2014 11:28
quelle
0

Die Standardoperatoren gelten nur für Primitive und Boxed-Primitive, und Sie können nicht dynamisch herausfinden, welche Operatoren auf das betreffende Objekt anwendbar sind.

Bearbeiten: Wenn Sie wissen möchten, welche Methode Sie zur Ausführung von Standardoperatorfunktionen aufrufen könnten, können Sie eine Instanz der Vergleichsschnittstelle für die Operatoren größer / kleiner als oder gleich ( Ссылка ).

    
grimmeld 17.07.2014 11:23
quelle