รับบิตของ 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