我的java类如下
public class Test {
protected enum TestEnum {A, B, C};
public Test(TestEnum te) {
}
}
这是我的Scala
class ScalaEnum(myEnum: TestEnum) extends Test(myEnum) {
}
我收到以下错误消息
对象中的类TestEnum无法在对象Test中访问Test不允许访问受保护类TestEnum,因为封装类XXX中的类ScalaEnum不是对象的子类在YYY包中定义了目标答案 0 :(得分:2)
正如@Alex和@ Jean-Phillipe所说,这与你试图访问枚举的事实没什么关系,更多的是与内部类枚举是隐式静态这一事实有关:参见{{ 3}},例如。
这意味着你正在对抗this answer。使用Scala 2.9.1将TestEnum
更改为公开可以解决问题。
尽管如此,尽管Martin强烈反对删除限制,但您的代码与Scala 2.10一样正常工作。
答案 1 :(得分:0)
听起来enum类是隐式静态的,因为Scala将其称为“对象测试”。尝试在构造函数中对其进行限定(例如Test.TestEnum
),如果这不起作用,则放宽对包访问的可见性。