考虑到以下 Kotlin 代码:
object OldTownRoad {
const val COWBOY_HATS = "from Gucci"
const val WRANGLER = "on my booty"
}
以及这个Java类:
public class Scrap {
@Named(OldTownRoad.COWBOY_HATS)
public void lilNasXrefs() {
System.out.println(OldTownRoad.COWBOY_HATS);
System.out.println(OldTownRoad.WRANGLER);
}
}
编译器在println()
调用时非常高兴。它对@Named
注释中使用COWBOY_HATS
表示“属性值必须是常量”感到不满,如Android Studio 3.5.3截图所示:
我尝试在这些const val
声明上使用@JvmStatic
和@JvmField
,但编译器抱怨两者都不适用于const
属性。从
companion object
获得相同的结果:class OldTownRoad {
companion object {
const val COWBOY_HATS = "from Gucci"
const val WRANGLER = "on my booty"
}
}
是否有其他 Kotlin 常量语法可在从 Java 注释中引用时起作用?
final const val
的结果是“final 是一个冗余修饰符”。这样做也不能解决问题。 - CommonsWare和
implementation 'javax.inject:javax.inject:1'```。 - alvinalvord