0

假设我在 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() 时已初始化我的类字段。

谢谢

德斯

4

1 回答 1

0

您可以将该变量放入伴随对象中,然后执行

override def init(): Unit = println("init: x = " + B.x)

whereB是这样声明的:

object B {
  val x = 3
}

您还可以x在内部定义/初始化init().

于 2013-11-13T22:47:46.647 回答