6

我有一些用Java编写的代码。对于新课程,我计划用 Scala 编写。我在访问基类的受保护静态成员时遇到问题。这是示例代码:

Java代码:

class Base{
    protected static int count = 20;
}

斯卡拉代码:

class Derived extends Base{
    println(count);
}

对此有何建议?我怎么能在不修改现有基类的情况下解决这个问题

4

1 回答 1

9

这在 Scala 中是不可能的。由于 Scala 没有表示static您不能访问protected static父类的成员。这是一个已知的限制

解决方法是执行以下操作:

// Java
public class BaseStatic extends Base {
  protected int getCount() { return Base.count; }
  protected void setCount(int c) { Base.count = c; }
}

现在您可以从这个新类继承并通过 getter/setter 方法访问静态成员:

// Scala
class Derived extends BaseStatic {
  println(getCount());
}

这很难看——但如果你真的想使用protected static成员,那么这就是你必须做的。

于 2012-08-20T11:02:56.530 回答