Kann ich auf ein Scala-Objekt ohne Klammern von Java zugreifen?

8

Gegeben das folgende Scala-Objekt:

%Vor%

Es scheint, dass der Scala-Compiler eine Methode ohne Parameter generiert, um auf das Feld NAME zuzugreifen. Wenn ich jedoch versuche, von Java aus auf dieses Feld zuzugreifen, sieht es so aus, als ob die einzige Möglichkeit, auf dieses Feld zuzugreifen, eine parameterlose Methode ist wie:

%Vor%

Gibt es eine Möglichkeit, den Scala-Compiler dazu zu bringen, Java den Zugriff auf val für das erwartete Java-Idiom zu erlauben:

%Vor%     
Jeff Axelrod 08.12.2011, 16:12
quelle

2 Antworten

7

Genau genommen ist die Antwort nein, weil scala nicht nur ein Feld erzeugt, sondern ein Paar Methoden, um darauf zuzugreifen. Wenn Sie jedoch die Scala val mit @scala.reflect.BeanProperty annotieren, werden Java-ähnliche Getter- und Setter-Methoden erzeugt.

so, während Sie nicht in der Lage wären zu sagen (in Ihrem Fall)

%Vor%

Sie würden in der Lage sein,

zu sagen %Vor%

Was wäre ein Java-ähnliches Idiom, nur nicht das, was Sie erhofft haben.

N.B. Ich habe @BeanProperty nicht mit einem Großbuchstaben wie diesem versucht, also bin ich mir nicht sicher, was es tatsächlich produzieren würde.

    
Ian McLaird 08.12.2011, 19:28
quelle
1

Nein, weil es im Bytecode unterschiedliche Anweisungen gibt, um auf das Feld zuzugreifen und die Methode aufzurufen. Sie müssen dann Javac patchen (und Ihren IDE-Syntax Highlighter).

    
korifey 08.12.2011 16:17
quelle

Tags und Links