在 Kotlin,Java 静态 final 字段的等价物是什么?

在 Java 中,要声明一个常量,需要执行以下操作:

class Hello {
public static final int MAX_LEN = 20;
}

在 Kotlin,什么是对等的?

82233 次浏览

根据科特林 文件的数据,这是等价的:

class Hello {
companion object {
const val MAX_LEN = 20
}
}

用法:

fun main(srgs: Array<String>) {
println(Hello.MAX_LEN)
}

这也是 static final 属性(带 getter 的字段) :

class Hello {
companion object {
@JvmStatic val MAX_LEN = 20
}
}

最后,这是静态的最后一个字段:

class Hello {
companion object {
@JvmField val MAX_LEN = 20
}
}

如果在 Hello中有一个实现,那么在类中使用 companion object

class Hello {
companion object {
val MAX_LEN = 1 + 1
}


}

如果 Hello是一个纯粹的单例对象

object Hello {
val MAX_LEN = 1 + 1
}

如果属性是编译时常量,则添加 const关键字

object Hello {
const val MAX_LEN = 20
}

如果您想在 Java 中使用它,请添加 @JvmStatic注释

object Hello {
@JvmStatic val MAX_LEN = 20
}

为了我

object Hello {
const val MAX_LEN = 20
}

我简单地将静态 final 字段放在类的上方,如下所示

private val MIN_LENGTH = 10 // <-- The `private` scopes this variable to this file. Any class in the file has access to it.


class MyService{
}
class Hello {
companion object {
@JvmStatic val MAX_LEN = 20
}
}