0Pricing
Kotlin Academy · บทเรียน

การกำหนด 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 ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

บทเรียนทั้งหมดในหลักสูตรนี้

  1. การใช้ Annotation
  2. การกำหนด Annotation
  3. พื้นฐาน Reflection
  4. Reflection เชิงปฏิบัติ
← กลับไปที่ Kotlin Academy