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_HATS
dalam @Named
anotasi, mengatakan "Nilai atribut harus konstan", seperti yang terlihat di tangkapan layar Android Studio 3.5.3 ini:
Saya mencoba @JvmStatic
dan @JvmField
pada const val
deklarasi tersebut, tetapi kompiler mengeluh bahwa tidak ada yang valid untuk const
properti.
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 val
hasil dalam "final adalah pengubah redundan". Baik itu maupunfinal val
membersihkan masalah.Jawaban:
Saya lupa melihat apakah ini bug Android Studio. :Telapak tangan:
Ternyata jika Anda menjalankan kode, itu berjalan dengan baik. Android Studio 3.5.3 tampaknya mengeluh tidak perlu.
Saya mengajukan laporan bug untuk mencoba mendapatkan konfirmasi masalah.
Terima kasih banyak kepada @natario, yang komentarnya membuat saya sadar bahwa ini mungkin masalah IDE!
sumber