给出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()
调用感到满意。它抱怨在COWBOY_HATS
批注中使用@Named
,说“属性值必须恒定”,如以下Android Studio 3.5.3屏幕截图所示:
我在这些@JvmStatic
声明中尝试了@JvmField
和const val
,但是编译器抱怨这两个属性都不对const
属性有效。
我从companion object
得到相同的结果:
class OldTownRoad {
companion object {
const val COWBOY_HATS = "from Gucci"
const val WRANGLER = "on my booty"
}
}
从Java批注引用时,还有其他一些Kotlin常量语法可以工作吗?