【发布时间】:2018-08-31 18:15:33
【问题描述】:
val和const valhere有什么区别已经搞清楚了。
但我的问题是,为什么我们应该使用const 关键字?从生成的 Java 代码角度看没有区别。
这个 Kotlin 代码:
class Application
private val testVal = "example"
private const val testConst = "another example"
生成:
public final class ApplicationKt
{
private static final String testVal = "example";
private static final String testConst = "another example";
}
【问题讨论】:
-
显式优于隐式。
-
如果您在初始化后尝试将值分配给 const,编译器可能会将其视为可能的错误。通过定义一个常量,您是在告诉编译器(和开发人员,包括您自己)这个值不会改变。
-
@JamesB 如果您尝试将值分配给非
constval,您认为会发生什么? -
我很惊讶没有人提到这一点。另一个很大的区别是编译器将内联一个常量。尝试在 Kotlin 代码中引用 testVal 和 testConst 以了解我的意思。