0

我有抽象 java 类,其中包含声明为的嵌套类protected static

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

当我尝试在扩展 AbstractJavaClass 的 Scala 类中实例化它时,就像我在 java 中所做的那样(即仅在方法 new InnerClass 中引用名称):

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

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

4

1 回答 1

0

在这里偶然发现:在scala中访问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.

虽然我无法解决最初的问题(当 class 为 时protected static),但当我将其更改为public static定义时,AbstractJavaClass我可以这样使用它:

class ScalaClass extends AbstractJavaClass {
  import AbstractJavaClass.InnerClass

  def method = new InnerClass
}

使用new InnerClass不导入会产生同样的错误。

于 2012-09-10T15:07:28.620 回答