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_HATS
in der @Named
Anmerkung und sagt "Attributwert muss konstant sein", wie in diesem Screenshot von Android Studio 3.5.3 gezeigt:
Ich habe versucht , @JvmStatic
und @JvmField
auf diesen const val
Erklärungen, aber der Compiler beschwert sich, dass weder für gültig sind const
Eigenschaften.
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 val
führt zu "final ist ein redundanter Modifikator". Weder das nochfinal val
das Problem klären.Antworten:
Ich habe vergessen zu sehen, ob dies ein Android Studio-Fehler war. : Gesichtspalme:
Es stellt sich heraus, dass der Code einwandfrei funktioniert, wenn Sie ihn ausführen. Android Studio 3.5.3 scheint sich unnötig zu beschweren.
Ich habe einen Fehlerbericht eingereicht , um eine Bestätigung des Problems zu erhalten.
Vielen Dank an @natario, dessen Kommentar mir klar machte, dass dies ein IDE-Problem sein könnte!
quelle