java - 在scala中访问java基类的静态成员

标签 java scala inheritance static scala-java-interop

I有一些代码是用Java写的。对于新类(class),我计划用 Scala 编写。我在访问基类的 protected 静态成员时遇到问题。这是示例代码:

Java代码:

class Base{
    protected static int count = 20;
}

scala代码:

class Derived extends Base{
    println(count);
}

对此有何建议?我如何在不修改现有基类的情况下解决这个问题

最佳答案

这在 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 成员,那么你就必须这样做。

关于java - 在scala中访问java基类的静态成员,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12034017/

相关文章:

java - 无法解决临时属性的属性异常

java - 比较两个整数字符串并打印出匹配项

java - Akka/Java getContext().become 带参数?

scala - Spark - 从 DataFrame 中提取单个值

scala - 我应该使用什么版本管理器来管理多个 Scala 版本?

C++从父类的变量上继承子调用函数

java - 继承与组合

java - 如何找到 Java 类中使用特定方法的所有执行路径?

c++ - 将父类转换为子类以避免冗余

java - 使用 request.getParameter 请求不同的参数