簡體   English   中英

Java初始化問題的scala繼承

[英]scala inheritence from java initialisation issue

說我在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()時初始化了我的類字段。

謝謝

德斯

您可以將該變量放入一個伴隨對象中,然后執行

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

其中B的聲明是這樣的:

object B {
  val x = 3
}

您也可以在init()定義/初始化x

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM