有没有办法在Kotlin中混合语句(如打印语句)和成员分配?
这是我想做的一个例子(用Java):

class MySystem {
    ComponentA componentA;
    ComponentB componentB;

    public MySystem() {
        System.out.println("Initializing components");
        this.componentA = new ComponentA();
        System.out.println("Constructed componentA");
        this.componentB = new ComponentB();
        System.out.println("Constructed componentB");
    }
}

感谢您的任何投入,谢谢。

最佳答案

是的,有:使用 init blocksinit块和属性初始化器的执行顺序与代码中显示的顺序相同:

class MyClass {
    init { println("Initializing components") }

    val componentA = ComponentA()
    init { println("Constructed componentA") }

    val componentB = ComponentB()
    init { println("Constructed componentA") }
}

或者,也可以将声明和初始化分开:
class MyClass {
    val componentA: ComponentA
    val componentB: ComponentB

    init {
        println("Initializing components")
        componentA = ComponentA()
        println("Constructed componentA")
        componentB = ComponentB()
        println("Constructed componentB");
    }
}

这也将与辅助构造函数一起使用。

09-05 08:04