IHAVE用Java编写的一些代码。 而对于新的类,我计划在斯卡拉写。 我有一个关于访问的基类的受保护的静态成员的问题。 下面是示例代码:
class Base{
protected static int count = 20;
}
class Derived extends Base{
println(count);
}
在这个什么建议吗? 我怎么能解决这个问题,而无需修改现有基本类
IHAVE用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
成员那么这是你必须做的事情。