如何从Scala访问Java枚举?

如何从Scala访问Java枚举?,scala,enums,scala-java-interop,Scala,Enums,Scala Java Interop,我的java类如下 public class Test { protected enum TestEnum {A, B, C}; public Test(TestEnum te) { } } 这是我的Scala class ScalaEnum(myEnum: TestEnum) extends Test(myEnum) { } 我收到以下错误消息 在对象测试中无法访问对象测试中的类TestEnum不允许访问受保护的类TestEnum,因为在包XXX中封装类S

我的java类如下

public class Test {

    protected enum TestEnum {A, B, C};

    public Test(TestEnum te) {

    }

}
这是我的Scala

class ScalaEnum(myEnum: TestEnum) extends Test(myEnum) {

}
我收到以下错误消息


在对象测试中无法访问对象测试中的类TestEnum不允许访问受保护的类TestEnum,因为在包XXX中封装类ScalaEnum不是包YYY中定义目标的对象测试的子类

听起来enum类是隐式静态的,因为Scala称之为“对象测试”。尝试在构造函数中对其进行限定(例如,
Test.TestEnum
),如果这不起作用,则可以放松对包访问的可见性。

正如@Alex和@Jean Phillipe所说,这与您试图访问枚举的事实没有多大关系,而与内部类枚举隐式静态的事实有更多关系:请参见,比如说

这意味着你要面对的是。将
TestEnum
更改为公共工程,解决Scala 2.9.1的问题


话虽如此,尽管Martin强烈反对取消限制,但您的代码在Scala 2.10上仍能正常工作。

正是如此。好的,如果你限定了这个名字呢?:)