การกำหนด Annotation
สร้าง Annotation แบบกำหนดเอง
การกำหนด Annotation เป็นบทเรียน Kotlin Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 2 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Kotlin Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Kotlin Academy มีบทเรียนทั้งหมด 4 บทเรียน
การประกาศแอนโนเทชัน
คุณกำหนดแอนโนเทชันด้วยคีย์เวิร์ด annotation class แอนโนเทชันที่ง่ายที่สุดจะไม่เก็บข้อมูลใด ๆ และทำหน้าที่เป็นเครื่องหมาย
annotation class Beta
@Beta
fun newFeature() = "experimental"
fun main() {
println(newFeature())
}พารามิเตอร์ของแอนโนเทชัน
แอนโนเทชันสามารถเก็บข้อมูลผ่านพารามิเตอร์ของคอนสตรัคเตอร์ได้ แต่ชนิดที่อนุญาตมีจำกัด ได้แก่ ชนิดพื้นฐาน String ค่าแจกแจง แอนโนเทชันอื่น KClass และอาร์เรย์ของชนิดเหล่านั้น
annotation class ApiVersion(val value: Int)
@ApiVersion(2)
fun endpoint() = "v2"
fun main() {
println(endpoint())
}@Target
@Target จะจำกัดตำแหน่งที่สามารถใช้แอนโนเทชันของคุณได้ คุณส่งค่า AnnotationTarget อย่างน้อยหนึ่งค่าหรือหลายค่า เช่น CLASS, FUNCTION หรือ PROPERTY
@Target(AnnotationTarget.FUNCTION)
annotation class Loggable
@Loggable
fun process() = "processing"
fun main() {
println(process())
}@Retention
@Retention จะควบคุมระยะเวลาที่แอนโนเทชันคงอยู่:
SOURCE— คอมไพเลอร์จะทิ้งไปBINARY— เก็บไว้ในไฟล์คลาส แต่รีเฟลกชันจะมองไม่เห็นRUNTIME— เก็บไว้และรีเฟลกชันมองเห็นได้ (เป็นค่าเริ่มต้น)
@Retention(AnnotationRetention.RUNTIME)
annotation class Important
@Important
class Order
fun main() {
println("Important is readable at runtime")
}เป้าหมายหลายรายการ
ระบุเป้าหมายหลายรายการเพื่อให้ใช้แอนโนเทชันได้มากกว่าหนึ่งตำแหน่ง ในที่นี้แอนโนเทชันใช้ได้ทั้งกับคลาสและฟังก์ชัน
@Target(AnnotationTarget.CLASS, AnnotationTarget.FUNCTION)
annotation class Audited
@Audited
class Account {
@Audited
fun withdraw() = "ok"
}
fun main() {
println(Account().withdraw())
}ค่าเริ่มต้นของพารามิเตอร์
พารามิเตอร์ของแอนโนเทชันสามารถมีค่าเริ่มต้นได้ ทำให้ผู้เรียกละเว้นพารามิเตอร์เหล่านั้นได้ วิธีนี้ช่วยให้กรณีทั่วไปเขียนได้กระชับ
annotation class Cache(val seconds: Int = 60)
@Cache
fun cheap() = 1
@Cache(seconds = 300)
fun expensive() = 2
fun main() {
println("" + cheap() + " " + expensive())
}พารามิเตอร์แบบอาร์เรย์
คุณสามารถใช้ชนิดอาร์เรย์ได้ โดยระบุค่าด้วยไวยากรณ์ลิเทอรัลของอาร์เรย์ [ ... ] ขณะใช้งานแอนโนเทชัน
annotation class Roles(val names: Array<String>)
@Roles(["admin", "editor"])
fun restricted() = "secret"
fun main() {
println(restricted())
}@Repeatable
โดยค่าเริ่มต้น แอนโนเทชันหนึ่งรายการจะปรากฏบนองค์ประกอบหนึ่งรายการได้เพียงครั้งเดียว กำหนดให้เป็น @Repeatable เพื่อใช้แอนโนเทชันนั้นได้หลายครั้ง
@Repeatable
annotation class Tag(val value: String)
@Tag("db")
@Tag("cache")
fun layered() = "ok"
fun main() {
println(layered())
}พารามิเตอร์แอนโนเทชันแบบซ้อน
พารามิเตอร์ของแอนโนเทชันสามารถเป็นแอนโนเทชันอื่นได้ ทำให้คุณสร้างเมทาดาทาที่มีโครงสร้างได้
annotation class Author(val name: String)
annotation class Module(val owner: Author)
@Module(Author("Grace"))
class Payments
fun main() {
println("Nested annotation metadata defined")
}การออกแบบแอนโนเทชันที่ดี
แอนโนเทชันที่ออกแบบมาอย่างดีจะ:
- มีจุดประสงค์เดียวที่ชัดเจน
- กำหนด
@Targetเพื่อให้การใช้ผิดเป็นข้อผิดพลาดขณะคอมไพล์ - ใช้การคงอยู่แบบ
RUNTIMEเฉพาะเมื่อจำเป็นต้องใช้รีเฟลกชัน - มีค่าเริ่มต้นที่เหมาะสม
จากการนิยามสู่การใช้งาน
การกำหนดแอนโนเทชันเป็นเพียงครึ่งหนึ่งของเรื่องทั้งหมด โดยตัวมันเอง แอนโนเทชันเป็นเพียงเมทาดาทาที่ไม่ทำงาน จะต้องมีบางสิ่งมาอ่านมัน ซึ่งโดยทั่วไปคือรีเฟลกชันขณะทำงาน หรือตัวประมวลผลแอนโนเทชันขณะคอมไพล์ อีกไม่นานคุณจะได้ใช้รีเฟลกชัน
ตรวจสอบความเข้าใจอย่างรวดเร็ว
ทดสอบความเข้าใจเกี่ยวกับการกำหนดแอนโนเทชันของคุณ
ทบทวน
คุณได้เรียนรู้การกำหนดแอนโนเทชัน:
annotation classพร้อมพารามิเตอร์@Targetเพื่อจำกัดตำแหน่งที่ใช้@Retentionเพื่อควบคุมระยะเวลาคงอยู่@Repeatableและค่าเริ่มต้น
ถัดไป: ตรวจสอบชนิดต่าง ๆ ด้วยรีเฟลกชัน
คำถามที่พบบ่อย
บทเรียน “การกำหนด Annotation” ฟรีหรือไม่
ใช่ — ข้อความเต็มของ “การกำหนด Annotation” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Kotlin Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Kotlin Academy มีบทเรียนทั้งหมด 4 บทเรียน
คุณจะเรียนรู้อะไรในบทเรียน “การกำหนด Annotation”
สร้าง Annotation แบบกำหนดเอง คุณปฏิบัติ Kotlin Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน
คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Kotlin Academy หรือไม่
ไม่จำเป็นต้องมีประสบการณ์มาก่อน Kotlin Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 2 จากทั้งหมด 4 บทเรียน
บทเรียน “การกำหนด Annotation” ใช้เวลานานแค่ไหน
บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย
ฉันเขียนและรันโค้ดในบทเรียน Kotlin Academy นี้ได้ไหม
ได้ บทเรียน Kotlin Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- การใช้ Annotation
- การกำหนด Annotation
- พื้นฐาน Reflection
- Reflection เชิงปฏิบัติ