如何在Java注释声明中引用Kotlin常量?
鉴于Kotlin的这一点:如何在Java注释声明中引用Kotlin常量?,kotlin,Kotlin,鉴于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_
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
注释中使用了牛仔帽
,称“属性值必须是常量”,如Android Studio 3.5.3屏幕截图所示:
我在那些const val
声明上尝试了@JvmStatic
和@JvmField
,但编译器抱怨这两种声明对const
属性都无效
我从一个伴星对象
得到相同的结果:
class OldTownRoad {
companion object {
const val COWBOY_HATS = "from Gucci"
const val WRANGLER = "on my booty"
}
}
当从Java注释中引用时,是否还有其他Kotlin常量语法可以使用?我忘了看这是否是Android Studio的错误:facepalm: 结果表明,如果您运行代码,它运行得很好。Android Studio 3.5.3似乎在无谓地抱怨 我提出申请试图得到问题的确认
非常感谢@natario,他的评论让我意识到这可能是一个IDE问题 最终val?…您使用的是哪种Kotlin版本?我无法复制它。@RickSanchez:
final const val
导致“final是一个冗余修饰符”。这和final val
都不能解决问题。@natario:Kotlin 1.3。61@natario:谢谢你指出你不能重新修改它!这似乎是一个恶意的Android Studio检查错误——代码编译得很好。酷!值得一提的是,我使用了一个稍旧的AS版本(仍然是3.5)。哦,我明白了!我还有一个较旧的版本,Kotlin 1.3.70的3.3.2As。这个问题已经解决了(在Android Studio 3.6.1中)