Mik*_*ike 6 java inheritance static scala scala-java-interop
我有一些用Java编写的代码.对于新课程,我打算用Scala编写.我有一个关于访问基类的受保护的静态成员的问题.以下是示例代码:
Java代码:
class Base{
protected static int count = 20;
}
Run Code Online (Sandbox Code Playgroud)
斯卡拉码:
class Derived extends Base{
println(count);
}
Run Code Online (Sandbox Code Playgroud)
有什么建议吗?如何在不修改现有基类的情况下解决这个问题
Dao*_*Wen 10
这在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; }
}
Run Code Online (Sandbox Code Playgroud)
现在您可以继承此新类,并通过getter/setter方法访问静态成员:
// Scala
class Derived extends BaseStatic {
println(getCount());
}
Run Code Online (Sandbox Code Playgroud)
这很丑陋 - 但如果你真的想使用protected static会员,那么你就必须这么做.
| 归档时间: |
|
| 查看次数: |
1685 次 |
| 最近记录: |