我有一些用Java编写的代码。对于新课程,我打算用Scala编写。我有一个关于访问基类的受保护的静态成员的问题。以下是示例代码:
Java代码:
class Base{
protected static int count = 20;
}
scala代码:
class Derived extends Base{
println(count);
}
对此有何建议?如何在不修改现有基类的情况下解决这个问题
答案 0 :(得分:10)
这在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
成员那么这就是你必须要做的事情。