我有一些用Java编写的代码。对于新课程,我计划用 Scala 编写。我在访问基类的受保护静态成员时遇到问题。这是示例代码:
Java代码:
class Base{
protected static int count = 20;
}
斯卡拉代码:
class Derived extends Base{
println(count);
}
对此有何建议?我怎么能在不修改现有基类的情况下解决这个问题
我有一些用Java编写的代码。对于新课程,我计划用 Scala 编写。我在访问基类的受保护静态成员时遇到问题。这是示例代码:
Java代码:
class Base{
protected static int count = 20;
}
斯卡拉代码:
class Derived extends Base{
println(count);
}
对此有何建议?我怎么能在不修改现有基类的情况下解决这个问题
这在 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
成员,那么这就是你必须做的。