Dato questo bit di Kotlin:
object OldTownRoad {
const val COWBOY_HATS = "from Gucci"
const val WRANGLER = "on my booty"
}
e questa classe Java:
public class Scrap {
@Named(OldTownRoad.COWBOY_HATS)
public void lilNasXrefs() {
System.out.println(OldTownRoad.COWBOY_HATS);
System.out.println(OldTownRoad.WRANGLER);
}
}
Il compilatore è soddisfatto delle println()chiamate. Si lamenta dell'uso di COWBOY_HATSnell'annotazione @Named, dicendo "Il valore dell'attributo deve essere costante", come visto in questo screenshot di Android Studio 3.5.3:

Ho provato @JvmStatice @JvmFieldsu quelle const valdichiarazioni, ma il compilatore si lamenta che nessuno dei due è valido per le constproprietà.
Ottengo gli stessi risultati da un companion object:
class OldTownRoad {
companion object {
const val COWBOY_HATS = "from Gucci"
const val WRANGLER = "on my booty"
}
}
C'è qualche altra sintassi costante di Kotlin che funziona quando viene referenziata da un'annotazione Java?
final const valrisultato in "final è un modificatore ridondante". Né quello né final valchiarire il problema.