[英]Instantiate nested class in Scala when extending Java class
I have abstract java class which contains nested class declared as protected static
: 我有抽象的Java类,其中包含声明为
protected static
嵌套类:
public abstract class AbstractJavaClass {
// contains nested class
protected static class InnerClass {
...
}
}
When I'm trying to instantiate it in Scala class extending AbstractJavaClass like I do in java (ie just referring name inside method new InnerClass): 当我试图在Scala类中实例化它扩展AbstractJavaClass时,就像在Java中一样(即,仅在方法new InnerClass中引用名称):
class ScalaClass extends AbstractJavaClass {
def method = new InnerClass()
}
I get error: type InnerClass is not a member of ScalaClass . 我收到错误: InnerClass类型不是ScalaClass的成员 。 What am I doing wrong?
我究竟做错了什么? The same in java works fine.
在Java中也可以正常工作。
Stumbled here: access java base class's static member in scala 偶然发现: 在scala中访问java基类的静态成员
It says 它说
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.
Though I couldn't resolve initial issue (when class is protected static
), when I changed it to public static
in definition of AbstractJavaClass
I could use it this way: 尽管我无法解决最初的问题(当类
protected static
),但是当我在AbstractJavaClass
定义中将其更改为public static
时,我可以通过以下方式使用它:
class ScalaClass extends AbstractJavaClass {
import AbstractJavaClass.InnerClass
def method = new InnerClass
}
Using new InnerClass
without import gives the same error. 使用
new InnerClass
无进出口给出了同样的错误。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.