假设我在java中有以下类:
class A
{
public A()
{
init();
}
void init()
{
System.out.println("A:init()");
}
}
然后我在scala中继承它,如下所示:
class B extends A {
var x = 3
override def init(): Unit = println("init: x = " + x)
}
当我构造B的实例时,我的init覆盖中x的值当然不会是3,因为它在该阶段尚未初始化。如果我无法更改java类,那么有人可以推荐最好的方法来确保我的类字段在调用init()时已初始化。
由于
德
答案 0 :(得分:0)
您可以将该变量放入伴随对象中,然后执行
override def init(): Unit = println("init: x = " + B.x)
其中B
被声明为:
object B {
val x = 3
}
您还可以在x
内定义/初始化init()
。