kotlin - 如何知道 val 的值是在编译时还是在运行时分配的?
问题描述
有没有办法知道 Val 的值在编译时或运行时是已知的?我的意思是我可以在 IDE 或其他地方检查吗?因为在我google之后,没有文章谈论它。他们只是指出哪些在编译时已知,哪些在运行时已知,但没有提及如何知道这一点。
据我所知,如果我将原始类型或字符串分配给 Val,它的值将在编译时知道。相反,如果我分配一个函数或对象(该值需要从另一个地方计算或引用),它的值将在运行时知道。但是有什么方法可以验证或知道我们分配的值将在编译时或运行时(通过 IDE 或反编译)知道吗?
解决方案
使用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
推荐阅读
- css - Bootstrap 3.3.7 更改导航栏中折叠堆栈的悬停/活动颜色?
- paypal - 动态自定义值贝宝按钮
- neo4j - Neo4j:仅从可能的子路径返回根节点
- android - 新活动调用 OnCreate 时崩溃
- database - 为什么在 Heroku 应用程序中我的数据库没有从 Heroku ClearDB 加载?
- java - 为什么空赋值前的引用值返回给调用方法?
- javascript - 打破 Array 循环函数的循环(map、forEach 等)
- c++ - 使用 QString 和 QByteArray 的 QDataStream 问题
- python - 将函数应用于熊猫 groupby 中的列子集
- java - 如何从父表中获取生成的 id 并插入到子表中