在scala中访问java基类的静态成员
我用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; } }
现在,您可以inheritance此新类,并通过getter / setter方法访问静态成员:
// Scala class Derived extends BaseStatic { println(getCount()); }
这很难看 – 但是如果你真的想要使用protected static
成员那么这就是你必须要做的事情。