gpt4 book ai didi

java - 注释中不允许从伴生对象分配静态最终值

转载 作者:太空宇宙 更新时间:2023-11-03 13:09:08 25 4
gpt4 key购买 nike

我在 Kotlin 中创建了一个类:

class Extras {
companion object {
var EXTRA_NAME: String? = null

fun setExtraName() {
var extraName: String? = null
//...
EXTRA_NAME = extraName
}
}
}

我在 Application 类的 onCreate() 中调用 setExtraName()

然后将EXTRA_NAME传递给方法的注解(在Java中定义):

static final String EXTRA_NAME = Extras.Companion.getEXTRA_NAME();

@Extra(EXTRA_NAME)
void doSomething() {
}

但是,我收到以下错误:

Attribute value must be constant

为什么?

最佳答案

解决这个问题

编译成功

annotation class Test(
val value: String
)

object Keys {
const val API_KEY = "AB"
}

@Test(Keys.API_KEY)
fun doSomething() {

}

const 使值成为 compile-time constant , 这允许它被交换到注释中。

为什么需要这个

由于注释处理器在运行时之前可以访问注释,因此它们必须是编译时常量,这就是为什么在 Kotlin 中必须使用 const 定义它们。

关于java - 注释中不允许从伴生对象分配静态最终值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50299790/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com