如何创建Kotlin常量和静态值(附实例)

2,043 阅读2分钟

在Kotlin中,你可以使用varval 关键字来声明和初始化变量。

使用var 关键字创建的变量可以被改变,这意味着它们是可变的

要在Kotlin中创建常量*(不可改变的*)值,你需要在声明变量时使用val 关键字:

val statusGreen = "green"
statusGreen = "red" // Error: Val cannot be reassigned

要创建一个在编译时已知的静态变量,你可以在val 关键字之前添加const 关键字。

const 关键字相当于在Java中使用static 关键字:

const val STATUS_GREEN = "green"

当初始化一个const val 变量时,我们鼓励你使用所有的大写字母来定义变量名称,并用下划线来分隔这些单词。这是为了遵循Java在声明静态常量变量时的惯例。

但是如果你想的话,你仍然可以使用camelCase命名法。

最后,你只能在顶层或对象中创建一个const val 变量:

package com.example.myapplication
const val STATUS_GREEN = "green" // OK

class Helper {
const val STATUS_RED = "red" // Error
}
object Constants {
const val STATUS_YELLOW = "yellow" // OK
}

要在一个class 里面声明一个const val 变量,你需要在你的Kotlinclass 中添加一个companion object

看一下下面的例子:

class Helper {
companion object {
const val STATUS_RED = "red" // OK
 }
}

companion object 关键字创建了一个与class 同名的对象。这是Kotlin访问class 成员的方式,而不需要实例化class 本身。

因为在Kotlin中你可以使用object 关键字创建一个对象,所以当你想对常量变量进行分组时,建议创建一个object 而不是class

考虑一下下面的例子:

object Status {
const val GREEN = "green"
const val YELLOW = "yellow"
const val RED = "red"
}

然后你可以像调用Math.PI 常量一样调用object 里面的常量:

println(Status.GREEN) // green
println(Status.YELLOW) // yellow
println(Status.RED) // red

Kotlinobject 代表一个不能被实例化的静态实例(单子),它非常适合于存储静态常量值。

当你需要创建一个不能被实例化的对象时,使用object 关键字,而不是class

如果你因为特殊原因必须使用class ,那么你需要在类中添加一个companion object ,用于声明常量成员。

这就是你在Kotlin中定义常量值的方法😉。