使用Java基础类的静态成员在斯卡拉(access java base class's st

2019-06-27 04:42发布

IHAVE用Java编写的一些代码。 而对于新的类,我计划在斯卡拉写。 我有一个关于访问的基类的受保护的静态成员的问题。 下面是示例代码:


class Base{
    protected static int count = 20;
}


class Derived extends Base{
    println(count);
}

在这个什么建议吗? 我怎么能解决这个问题,而无需修改现有基本类

Answer 1:

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



文章来源: access java base class's static member in scala