在扩展Java类时实例化Scala中的嵌套类
我有一个抽象java类,其中包含声明为在扩展Java类时实例化Scala中的嵌套类,java,scala,Java,Scala,我有一个抽象java类,其中包含声明为受保护静态的嵌套类: public abstract class AbstractJavaClass { // contains nested class protected static class InnerClass { ... } } 当我试图像在java中一样在扩展AbstractJavaClass的Scala类中实例化它时(即,仅在方法new InnerClass中引用名称): 我得到错误:类型InnerClass不是Scala
受保护静态的嵌套类:
public abstract class AbstractJavaClass {
// contains nested class
protected static class InnerClass {
...
}
}
当我试图像在java中一样在扩展AbstractJavaClass的Scala类中实例化它时(即,仅在方法new InnerClass中引用名称):
我得到错误:类型InnerClass不是ScalaClass的成员。我做错了什么?同样的方法在java中也适用。在这里结结巴巴地说:
上面说
This isn't possible in Scala. Since Scala has no notation of static you can't
access protected static members of a parent class. This is a known limitation.
虽然我无法解决最初的问题(当类是受保护的静态
时),但当我在抽象Java类
的定义中将其更改为公共静态
时,我可以这样使用它:
class ScalaClass extends AbstractJavaClass {
import AbstractJavaClass.InnerClass
def method = new InnerClass
}
在不导入的情况下使用new InnerClass
会产生相同的错误
class ScalaClass extends AbstractJavaClass {
import AbstractJavaClass.InnerClass
def method = new InnerClass
}