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
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.
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.
Tags und Links scala enums scala-java-interop