Mengingat sedikit Kotlin ini:
object OldTownRoad {
const val COWBOY_HATS = "from Gucci"
const val WRANGLER = "on my booty"
}
dan kelas Java ini:
public class Scrap {
@Named(OldTownRoad.COWBOY_HATS)
public void lilNasXrefs() {
System.out.println(OldTownRoad.COWBOY_HATS);
System.out.println(OldTownRoad.WRANGLER);
}
}
Kompiler senang dengan println()panggilan. Itu mengeluh tentang penggunaan COWBOY_HATSdalam @Namedanotasi, mengatakan "Nilai atribut harus konstan", seperti yang terlihat di tangkapan layar Android Studio 3.5.3 ini:

Saya mencoba @JvmStaticdan @JvmFieldpada const valdeklarasi tersebut, tetapi kompiler mengeluh bahwa tidak ada yang valid untuk constproperti.
Saya mendapatkan hasil yang sama dari companion object:
class OldTownRoad {
companion object {
const val COWBOY_HATS = "from Gucci"
const val WRANGLER = "on my booty"
}
}
Apakah ada sintaks konstan Kotlin lain yang berfungsi ketika direferensikan dari anotasi Java?
final const valhasil dalam "final adalah pengubah redundan". Baik itu maupun final valmembersihkan masalah.