在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成员那么这就是你必须要做的事情。