8

我的java类如下

public class Test {

    protected enum TestEnum {A, B, C};

    public Test(TestEnum te) {

    }

}

这是我的斯卡拉

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

}

我收到以下错误消息

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

4

2 回答 2

2

正如@Alex 和@Jean-Phillipe 所说,这与您尝试访问枚举的事实没有太大关系,更多的是与内部类枚举是隐式静态的事实有关:例如,请参阅此答案.

这意味着你正面临这个限制。使用 Scala 2.9.1更改TestEnum为 public 为我解决了这个问题。

说了这么多,尽管 Martin 强烈反对取消限制,但您的代码在 Scala 2.10 中可以正常工作。

于 2012-05-24T10:29:43.277 回答
0

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

于 2011-07-15T07:21:13.607 回答