Kotlinの学習を開始しました。init
ブロックとブロックの違いを教えてconstructor
ください。これと、これを使用して改善する方法の違いは何ですか?
class Person constructor(var name: String, var age: Int) {
var profession: String = "test"
init {
println("Test")
}
}
Kotlinの学習を開始しました。init
ブロックとブロックの違いを教えてconstructor
ください。これと、これを使用して改善する方法の違いは何ですか?
class Person constructor(var name: String, var age: Int) {
var profession: String = "test"
init {
println("Test")
}
}
Kotlin クラスのクラスは、コードを含まないプライマリ コンストラクター (クラス名の後のコンストラクター) であり、プロパティを初期化することしかできません (例: class X(var prop: String)
)。
プロパティが初期化された後に実行されるコードを追加できる場所のinit{..}
ブロック:
初期化ブロックは、クラス本体に表示されるのと同じ順序で実行され、プロパティ初期化子とインターリーブされます
それについての詳細は https://kotlinlang.org/docs/reference/classes.html#constructorsにあります
次に例を示します。
class X(var b: String) {
val a = print("a")
init {
print("b")
}
constructor() : this("aaa") {
print("c")
}
}
X()
呼び出されると、 が出力されabc
ます。したがって、プライマリ コンストラクターの後、セカンダリ コンストラクターの前init{..}
に呼び出されます。