Kotlin 中的静态初始化块
Static initialisation block in Kotlin
Kotlin 中的 static initialisation block 等价于什么?
我知道 Kotlin 被设计成没有静态的东西。我正在寻找具有等效语义的东西 - 当 class 首次加载时,代码是 运行 一次。
我的具体用例是我想从 Android AppCompat 库启用 DayNight 功能,the instructions 说要将一些代码放在 Application
[=20 的静态初始化块中=].
从某种角度来看,Kotlin 中的 companion object
s 相当于 Java classes 的静态部分。特别是,它们在 class 首次使用之前被初始化,这让您可以使用它们的 init
块来替代 Java 静态初始化器:
class C {
companion object {
init {
//here goes static initializer code
}
}
}
@voddan 这不是矫枉过正,实际上这就是 Kotlin 网站上的建议:“当相应的 class 被加载(解析)时,伴随对象被初始化,匹配 Java 静态初始值设定项。” Semantic difference between object expressions and declarations
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
}
}
class 中的对象声明可以用伴随 keyword.And 标记,在此我们可以使用像 java 静态方法和 variable.LIke classname.methodname或 classname.variablename
Kotlin 中的 static initialisation block 等价于什么?
我知道 Kotlin 被设计成没有静态的东西。我正在寻找具有等效语义的东西 - 当 class 首次加载时,代码是 运行 一次。
我的具体用例是我想从 Android AppCompat 库启用 DayNight 功能,the instructions 说要将一些代码放在 Application
[=20 的静态初始化块中=].
从某种角度来看,Kotlin 中的 companion object
s 相当于 Java classes 的静态部分。特别是,它们在 class 首次使用之前被初始化,这让您可以使用它们的 init
块来替代 Java 静态初始化器:
class C {
companion object {
init {
//here goes static initializer code
}
}
}
@voddan 这不是矫枉过正,实际上这就是 Kotlin 网站上的建议:“当相应的 class 被加载(解析)时,伴随对象被初始化,匹配 Java 静态初始值设定项。” Semantic difference between object expressions and declarations
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
}
}
class 中的对象声明可以用伴随 keyword.And 标记,在此我们可以使用像 java 静态方法和 variable.LIke classname.methodname或 classname.variablename