Angesichts dieses Kotlin-Teils:
object OldTownRoad {
const val COWBOY_HATS = "from Gucci"
const val WRANGLER = "on my booty"
}
und diese Java-Klasse:
public class Scrap {
@Named(OldTownRoad.COWBOY_HATS)
public void lilNasXrefs() {
System.out.println(OldTownRoad.COWBOY_HATS);
System.out.println(OldTownRoad.WRANGLER);
}
}
Der Compiler ist mit den println()Aufrufen zufrieden . Es beschwert sich über die Verwendung von COWBOY_HATSin der @NamedAnmerkung und sagt "Attributwert muss konstant sein", wie in diesem Screenshot von Android Studio 3.5.3 gezeigt:

Ich habe versucht , @JvmStaticund @JvmFieldauf diesen const valErklärungen, aber der Compiler beschwert sich, dass weder für gültig sind constEigenschaften.
Ich erhalte die gleichen Ergebnisse von companion object:
class OldTownRoad {
companion object {
const val COWBOY_HATS = "from Gucci"
const val WRANGLER = "on my booty"
}
}
Gibt es eine andere Kotlin-Konstantensyntax, die funktioniert, wenn auf eine Java-Annotation verwiesen wird?
final const valführt zu "final ist ein redundanter Modifikator". Weder das noch final valdas Problem klären.