首页 > 解决方案 > 如何知道 val 的值是在编译时还是在运行时分配的?

问题描述

有没有办法知道 Val 的值在编译时或运行时是已知的?我的意思是我可以在 IDE 或其他地方检查吗?因为在我google之后,没有文章谈论它。他们只是指出哪些在编译时已知,哪些在运行时已知,但没有提及如何知道这一点。

据我所知,如果我将原始类型或字符串分配给 Val,它的值将在编译时知道。相反,如果我分配一个函数或对象(该值需要从另一个地方计算或引用),它的值将在运行时知道。但是有什么方法可以验证或知道我们分配的值将在编译时或运行时(通过 IDE 或反编译)知道吗?

标签: kotlinvariables

解决方案


使用const val.

如果val使用附加修饰符声明 a const,编译器将确保它是编译时常量。

const val myCompileTimeConstant = "Hello, World!"

https://kotlinlang.org/docs/properties.html#compile-time-constants

您可以在运行时使用反射来检查属性是否声明为const

val isCompileTimeConstant = ::myCompileTimeConstant.isConst //true

推荐阅读