java - 注释中不允许从伴随对象分配的静态最终值
问题描述
我在 Kotlin 中创建了一个类:
class Extras {
companion object {
var EXTRA_NAME: String? = null
fun setExtraName() {
var extraName: String? = null
//...
EXTRA_NAME = extraName
}
}
}
我正在调用setExtraName()
应用onCreate()
程序类。
然后传递EXTRA_NAME
给方法的注解(在Java中定义):
static final String EXTRA_NAME = Extras.Companion.getEXTRA_NAME();
@Extra(EXTRA_NAME)
void doSomething() {
}
但是,我收到以下错误:
属性值必须是常量
为什么?
解决方案
解决这个问题
这编译和工作
annotation class Test(
val value: String
)
object Keys {
const val API_KEY = "AB"
}
@Test(Keys.API_KEY)
fun doSomething() {
}
const 使该值成为编译时常量,这允许将其交换到注释中。
为什么需要这个
由于注释处理器在运行前可以访问注释,因此它们必须是编译时常量,这就是为什么在 Kotlin 中必须使用 const 定义它们。
推荐阅读
- python-3.x - 无法安装 netmiko 或 paramiko
- sql - 尝试在 power bi 中实现 ar 脚本以更新 SQL Server 数据库
- php - 我在尝试上传图片时遇到错误
- express - 从发布请求重定向到新页面(服务器端)
- ios - 将数据列表从服务器填充到 tableview
- python - ximgproc(opencv-contrib 子模块)安装成功,但我收到 AttributeError
- python - 安装 ibapi 包
- angular - 未找到 [object Object] 的组件工厂
- javascript - 是否可以编写脚本在 React 组件上注入 props?
- sql - 获取是否匹配选择子句