2012-09-10 43 views
0

有抽象的Java类,它包含声明为protected static嵌套类:实例化嵌套类Scala中延伸时的Java类

public abstract class AbstractJavaClass { 
    // contains nested class 
    protected static class InnerClass { 
    ... 
    } 
} 

当我试图实例它延长AbstractJavaClass就像我在做的java类斯卡拉(即单指内法新名称将InnerClass):

class ScalaClass extends AbstractJavaClass { 
    def method = new InnerClass() 
} 

我得到错误:类型是将InnerClass不ScalaClass的成员。我究竟做错了什么?在Java中相同的工作正常。

回答

0

迷迷糊糊的位置:access java base class's static member in scala

它说

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. 

虽然我无法解析初始发行(当类是protected static),当我定义它改为public staticAbstractJavaClass我可以用它这样:

class ScalaClass extends AbstractJavaClass { 
    import AbstractJavaClass.InnerClass 

    def method = new InnerClass 
} 

使用new InnerClass没有导入给出同样的错误。