簡體   English   中英

Kotlin 中的靜態初始化塊

[英]Static initialisation block in Kotlin

Kotlin 中靜態初始化塊的等價物是什么?

我知道 Kotlin 被設計成沒有靜態的東西。 我正在尋找具有等效語義的東西 - 代碼在類首次加載時運行一次。

我的具體用例是我想從 Android AppCompat 庫啟用 DayNight 功能,並且說明中說要將一些代碼放在Application類的靜態初始化塊中。

從某種角度來看,Kotlin 中的companion object相當於 Java 類的靜態部分。 特別是,它們在類第一次使用之前被初始化,這讓你可以使用它們的init塊來替代 Java 靜態初始化器:

class C {
    companion object {
        init {
            //here goes static initializer code
        }
    }
}

@voddan 這不是矯枉過正,實際上這就是 Kotlin 站點上的建議:“當加載(解析)相應的類時,會初始化伴隨對象,匹配 Java 靜態初始化程序的語義。” 對象表達式和聲明之間的語義差異

companion object  { 
    // Example for a static variable
    internal var REQUEST_CODE: Int? = 500

    // Example for a static method
    fun callToCheck(value: String): String {
        // your code
    }
}

類內的對象聲明可以用伴隨關鍵字標記。在此之下我們可以使用像java靜態方法和變量。比如類名.方法名或類名.變量名

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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