我的java类如下

public class Test {

    protected enum TestEnum {A, B, C};

    public Test(TestEnum te) {

    }

}

这是我的斯卡拉
class ScalaEnum(myEnum: TestEnum) extends Test(myEnum) {

}

我收到以下错误消息

无法在对象Test中访问对象Test中的TestEnum类不允许访问 protected 类TestEnum,因为将包XXX中的类ScalaEnum封装为包YYY中定义了目标的包Test中的对象Test的子类

最佳答案

正如@Alex和@ Jean-Phillipe所说,这与您试图访问一个枚举并没有多大关系,而与内部类枚举是隐式静态的这一事实没有多大关系:例如,参见this answer

这意味着您正在与this limitation竞争。对于Scala 2.9.1,将TestEnum更改为公开可以解决此问题。

话虽如此,尽管Martin强烈反对删除该限制,但是您的代码在Scala 2.10中可以按预期工作。

关于scala - 如何从Scala访问Java枚举?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6703545/

10-12 18:55