รับบิตของ Kotlin นี้:
object OldTownRoad {
const val COWBOY_HATS = "from Gucci"
const val WRANGLER = "on my booty"
}
และคลาส Java นี้:
public class Scrap {
@Named(OldTownRoad.COWBOY_HATS)
public void lilNasXrefs() {
System.out.println(OldTownRoad.COWBOY_HATS);
System.out.println(OldTownRoad.WRANGLER);
}
}
คอมไพเลอร์มีความสุขกับการprintln()
โทร มันบ่นเกี่ยวกับการใช้งานCOWBOY_HATS
ใน@Named
คำอธิบายประกอบโดยบอกว่า "ค่าแอตทริบิวต์ต้องคงที่" ตามที่เห็นในภาพหน้าจอ Android Studio 3.5.3 นี้:
ฉันพยายาม@JvmStatic
และประกาศ@JvmField
เหล่านั้นconst val
แต่คอมไพเลอร์บ่นว่าไม่ถูกต้องสำหรับconst
คุณสมบัติ
ฉันได้รับผลลัพธ์เดียวกันจากcompanion object
:
class OldTownRoad {
companion object {
const val COWBOY_HATS = "from Gucci"
const val WRANGLER = "on my booty"
}
}
มีไวยากรณ์คงที่ Kotlin อื่น ๆ ที่ใช้งานได้เมื่ออ้างอิงจากบันทึกย่อ Java
คุณใช้ Kotlin รุ่นใดอยู่ ฉันทำซ้ำไม่ได้
—
นาตาริโอ
@RickSanchez:
—
CommonsWare
final const val
ผลลัพธ์ใน "final เป็นตัวแก้ไขซ้ำซ้อน" ไม่ว่าจะfinal val
เป็นปัญหาที่ชัดเจนหรือไม่
@natario: Kotlin 1.3.61
—
CommonsWare
@natario: ขอบคุณที่ชี้ให้เห็นว่าคุณไม่สามารถทำซ้ำได้! ดูเหมือนว่านี่เป็นข้อผิดพลาดในการตรวจสอบอันธพาล Android Studio ซึ่งเป็นรหัสที่ดี
—
CommonsWare