Kotlin建構函式(constructor)完全解析
簡要介紹
Kotlin的類必須有一個主建構函式,可以有多個次要建構函式.
主建構函式
1. 寫法一(主建構函式初始化程式碼在init塊中)
class User constructor(name: String) {
val name: String
init {
this.name = name
}
}
2. 精簡寫法
class User constructor(name: String) {
val name: String = name
}
3. 最精簡寫法
class User(val name: String)
反編譯之後對應的java類(注:上面寫法中,如果val替換為var,則對應java裡會出現setName方法,表示此屬性可修改):
public final class User { @NotNull private final String name; @NotNull public final String getName() { return this.name; } public User(@NotNull String name) { Intrinsics.checkParameterIsNotNull(name, "name"); super(); this.name = name; } }
如果不需要將建構函式中引數同時作為類屬性,也可以寫成如下形式(constructor表示建構函式,裡面執行初始化的處理):
class User { constructor(name:String) { } }
對應java程式碼:
public final class User { public User(@NotNull String name) { Intrinsics.checkParameterIsNotNull(name, "name"); super(); } }
次要建構函式
必須要要呼叫主建構函式或已經呼叫了主建構函式的次要建構函式
class User(val name: String) { constructor():this("") { } }
對應java程式碼:
public User(@NotNull String name) { Intrinsics.checkParameterIsNotNull(name, "name"); super(); this.name = name; } public User() { this(""); }
附錄
官方參考文件: https://kotlinlang.org/docs/reference/classes.html
安卓開發技術分享: https://www.jianshu.com/p/442339952f26
更多技術總結好文,請關注:「程式園中猿」
