Wie greife ich von Scala auf Java-Enums zu?

8

Meine Java-Klasse ist wie folgt

%Vor%

hier ist meine Scala

%Vor%

Ich erhalte die folgende Fehlermeldung

class TestEnum im Objekt Test kann im Objekt Test nicht aufgerufen werden. Zugriff auf geschützte Klasse TestEnum nicht erlaubt, da die umschließende Klassenklasse ScalaEnum im Paket XXX keine Unterklasse des Objekts Test im Paket YYY ist, in der das Ziel definiert ist

    
deltanovember 15.07.2011, 06:41
quelle

2 Antworten

2

Wie @Alex und @ Jean-Phillipe sagten, hat dies nicht viel damit zu tun, dass Sie versuchen, auf ein Enum zuzugreifen und mehr damit zu tun, dass innere Enums implizit statisch sind: siehe diese Antwort zum Beispiel.

Das bedeutet, dass Sie gegen diese Einschränkung stoßen. Ändern von TestEnum zu öffentlich zu sein funktioniert um das Problem für mich mit Scala 2.9.1.

Nachdem all dies trotz Martins vehementer Einwände gegen das Entfernen der Beschränkung gesagt wurde, funktioniert Ihr Code wie erwartet mit Scala 2.10.

    
rxg 24.05.2012, 10:29
quelle
0

Es klingt wie die enum-Klasse ist implizit statisch, weil Scala es "Objekt Test" nennt. Versuchen Sie, es im Konstruktor zu qualifizieren (z. B. Test.TestEnum ), und wenn dies nicht funktioniert, können Sie die Sichtbarkeit für den Paketinhalt verringern.

    
Alex Cruise 15.07.2011 07:21
quelle

Tags und Links