Benutze Scala-Konstanten in Java

8

Ich werte derzeit Scala für zukünftige Projekte aus und bin auf etwas Seltsames gestoßen. Ich habe die folgende Konstante für uns in einer JSP erstellt:

%Vor%

Und es hat nicht funktioniert. Nach einigem Experimentieren entschied ich mich zu dekompilieren, um auf den Grund zu kommen:

%Vor%

Das ist interessant! Persönlich frage ich mich seit einiger Zeit, warum ein Inspektor das Präfix get und ein Mutator das Präfix set in Java benötigt, wenn sie in verschiedenen Namensräumen leben.

>

Es könnte jedoch immer noch peinlich sein, dies dem Rest des Teams zu erklären. Ist es also möglich, eine öffentliche Konstante ohne den Inspektor zu haben?

    
Martin 05.10.2010, 06:57
quelle

2 Antworten

11

Dies liegt an dem Prinzip des einheitlichen Zugriffs , dh: Methoden und Felder sind nicht unterscheidbar

Siehe diese Antwort

  

In Scala 2.8.0 bedeutet das, wenn Sie haben   ein Begleitobjekt, du verlierst dein   statische Weiterleitungen)

Wenn Sie dies in Scala haben:

%Vor%

Sie können es so von Java

verwenden %Vor%

Siehe auch das Buch Scala in Depth

Beachten Sie auch die @ scala.reflect.BeanProperty für Klassen.

    
oluies 05.10.2010, 13:10
quelle
1

Ich hatte einen weiteren Blick auf den dekompilierten Code und notierte etwas anderes. Die Variablen sind nicht wirklich statisch. Meine nächste Idee war stattdessen, ein Objekt zu verwenden:

%Vor%

Aber jetzt werden die Dinge wirklich hässlich:

%Vor%

Ich bekomme also eine zusätzliche Klasse, die auf $ endet und eine Singleton-Instanz namens MOUDLE $ hat. Und da ist noch der Inspektor. So wird der Zugriff auf die Variable innerhalb eines JSP:

%Vor%

Das funktioniert wie erwartet und ich persönlich kann damit leben, aber wie soll ich das dem Team erklären?

Natürlich, wenn es einen einfacheren Weg gibt, höre ich gerne davon.

    
Martin 05.10.2010 08:45
quelle

Tags und Links