Operatorüberladungs-Plugin für Java

8

Ich habe einige nette Java-Compiler Hacks gesehen, in denen Sie Ersetzungen durch throw-exception-Anweisungen ersetzen , Sie können automatisch generiert haben Eigenschaften für Felder und so weiter ...

Ich habe mich nur gefragt ...

Ist es möglich, den Java-Compiler so zu hacken, dass er das Überladen von Operatoren unterstützt?

BEARBEITEN:

Es ist nicht so, dass mir das Überladen von Operatoren in Java oder so ähnlich fehlt. Ich möchte nur wissen, ob es möglich ist, es unter Verwendung der Hacks zu implementieren, die in den Links erwähnt werden, die ich oben angegeben habe. Bitte schlage mir nicht vor, auf eine andere Sprache wie Scala zu wechseln (was ich sowieso schon lerne!: D).

BEARBEITEN:

Bitte sagen Sie mir, ob es möglich ist, JSR 269 oder etwas ähnliches zu verwenden. : |

Danke.

    
Red Hyena 06.01.2010, 11:02
quelle

7 Antworten

5

Als Antwort auf die bearbeitete Frage können Sie den true -Operator in Java nur implementieren, indem Sie ihn der Sprache hinzufügen. Dies bedeutet, dass Sie entweder den Compiler ändern müssen, um Ihren Code zu kompilieren, oder einen Präprozessor schreiben, der Ihren Code in Java-Standard konvertiert. Für Ersteres können Sie eine fast vollständige FOSS Java-Implementierung entweder von GNU oder von OpenJDK Projekt. Für Letzteres können Sie entweder Ihren eigenen Parser mit Dingen wie JavaCC usw. schreiben (Beispiele finden Sie auf dieser Seite ) oder Sie können JFront als Basis verwenden, um Ihre eigene Syntax hinzuzufügen.

    
Chinmay Kanchi 10.01.2010, 01:49
quelle
4

Es ist möglich, das Überladen von Java-Operatoren mit JSR 269 mit einigen Hacks zu implementieren. Sehen Sie sich die Java-oo-Plugins für javac und Eclipse JDT an:

Ссылка

    
mart 22.05.2012 15:20
quelle
2

JFront ist ein Vorprozessor für die Sprache Java, mit dem Sie das Überladen von Operatoren für Ihre eigenen Klassen implementieren können . Leider scheint es diese Fähigkeit nicht zu Standardklassen hinzuzufügen (BigInteger et al. Wäre ein guter Kandidat dafür).

    
Chinmay Kanchi 06.01.2010 11:14
quelle
2

Sie können die Bytecode-Injektion verwenden, um einen Typ wie float durch einen eigenen Typ zu ersetzen. Dies kann nach dem Kompilieren erfolgen, ohne den Compiler zu ändern.

    
Peter Lawrey 09.01.2010 20:11
quelle
1

Wenn Sie den Operator überladen möchten, sollten Sie in Erwägung ziehen, zu Scala zu wechseln. Scala-Code ist mit Ihren Java-Klassen kompatibel und unterstützt das Überladen von Operatoren.

    
Scharrels 06.01.2010 11:06
quelle
1

Ein anderer Ansatz ist die Verwendung von Groovy-Bibliotheken, da Groovy bereits eine Überladung des Operators aufweist.

Ссылка

  

Die aktuelle Implementierung verwendet Groovy   für die Überlastung. Dieser Ansatz hat   Ein Nachteil: die groovigen Bibliotheken   muss mit dem Projekt geliefert werden.

    
JCasso 07.01.2010 08:20
quelle
0

Es ist keine Überladung des Operators möglich, aber unter Berücksichtigung der Links in Ihrer Frage könnten Sie an Ссылка     

Confusion 09.01.2010 20:06
quelle

Tags und Links