簡體   English   中英

無法在Android的Kotlin中為Activity類編寫主構造函數

[英]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等所有其他方式。 這給了我一個錯誤,即在沒有定義主構造函數的情況下不允許使用輔助構造函數。 那么如何編寫主構造函數。

兩點:

  1. 使用this關鍵字而不是super
  2. 將字符串參數傳遞給您的主要構造函數

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.

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