如何从Scala访问Java枚举?
我的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
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上仍能正常工作。正是如此。好的,如果你限定了这个名字呢?:)