[英]Cannot write primary constructor for Activity class in Kotlin in Android
從文檔中,我試圖做這樣的事情
//Primary:
class Main2Activity(val name: String) {
}
//Secondary:
constructor(a: Int) : super() {
this.a = a
}
因此,android studio給了我創建此輔助構造函數的選項。 但是它不能識別我上面寫的主要構造函數。 我還嘗試了init等所有其他方式。 這給了我一個錯誤,即在沒有定義主構造函數的情況下不允許使用輔助構造函數。 那么如何編寫主構造函數。
兩點:
this
關鍵字而不是super
class Main2Activity(val name: String) {
var a: Int = 0
constructor(a: Int) : this("myString") {
this.a = a
}
}
例:
val first = Main2Activity("Kotlin")
print("${first.name} ${first.a}") // >>> Kotlin, 0
val second = Main2Activity(11)
print("${second.name} ${second.a}") // >>> myString, 11
@Oliver Charlesworth的很好解釋 :
顯然, [主要構造函數和次要構造函數之間]存在各種語法差異。 但主要的概念差異是所有輔助構造函數最終都委托給主要構造函數。
我想到的方式是,主要構造函數是用於創建對象的規范接口,而次要構造函數就像靜態助手,用於轉換其他參數集以符合該接口。
有關更多信息: 構造函數
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.