I有一些代码是用Java写的。对于新类(class),我计划用 Scala 编写。我在访问基类的 protected 静态成员时遇到问题。这是示例代码:
Java代码:
class Base{
protected static int count = 20;
}
scala代码:
class Derived extends Base{
println(count);
}
对此有何建议?我如何在不修改现有基类的情况下解决这个问题
最佳答案
这在 Scala 中是不可能的。由于 Scala 没有 static
符号,因此您无法访问父类的 protected static
成员。这是 known limitation .
解决方法是做这样的事情:
// 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
成员,那么你就必须这样做。
关于java - 在scala中访问java基类的静态成员,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12034017/