ตอนที่ 1 ฉันได้เขียนสั้นๆ เกี่ยวกับคำอธิบายประกอบของประเภท SOURCE และ CLASS เรื่องนี้ควรค่าแก่การอ่านเพื่อหลีกเลี่ยงการหลงทางในส่วนที่สองและเพื่อขยายความ "เข้าใจผิด" ของคุณเล็กน้อย =) ฉันสัญญาว่าจะต้องมีอย่างน้อยหนึ่งคำที่คุณรู้แน่นอน!
ครั้งแรกที่ฉันเห็นคำอธิบายประกอบในงานที่นี่ ฉันไม่ได้สนใจมันมากนัก มี @Override ที่นี่และที่นั่น แต่ IDEA เพิ่มเข้าไป ดังนั้นฉันจึงคิดว่ามันต้องเป็นแบบนั้น เมื่อเวลาผ่านไปฉันรู้ว่าทุกอย่างลึกซึ้งยิ่งขึ้น ขณะที่คุณศึกษา คำอธิบายประกอบอาจดูค่อนข้างไร้ประโยชน์แต่จำเป็น คุณไม่รู้ว่าทำไมพวกเขาถึงดำรงอยู่หรือสิ่งที่พวกเขาทำ คุณได้อ่านบทความ 2-3 บทความที่กล่าวว่า "เป็นเรื่องดีที่เรามีคำอธิบายประกอบในตอนนี้ ทุกอย่างกลายเป็นเรื่องง่ายๆ" แต่ก่อนฉันไม่รู้ว่าสิ่งต่าง ๆ เป็นอย่างไร และฉันไม่เข้าใจว่าสิ่งต่าง ๆ ง่ายขึ้นในตอนนี้ ตอนนี้ฉันรู้แล้วและต้องการแบ่งปันเล็กน้อย คำอธิบายประกอบ (RetentionPolicy) มี 3 ประเภท:
พื้นเมือง — ฉันไม่เคยเห็นสิ่งนี้และไม่เคยใช้ ฉันคิดว่านี่เป็นคำอธิบายประกอบที่ค่อนข้างหายาก เพราะจะใช้เมื่อคุณต้องการเรียกใช้โค้ดในภาษา "ดั้งเดิม" อื่น ฉันพยายามและไม่พบการกล่าวถึงที่ชัดเจน
SuppressWarnings — คำอธิบายประกอบนี้มักใช้ดังนี้: @SuppressWarnings("unchecked") ใช้เพื่อระงับคำเตือนที่คุณทราบแล้ว ตัวอย่างก่อนหน้านี้ไม่แสดงคำเตือนเกี่ยวกับการแปลงประเภทที่ไม่ได้ตรวจสอบ นี่เป็นการใช้งานเดียวที่ฉันพบ
สร้างแล้ว — ตอนนี้ฉันพบคำอธิบายประกอบนี้เนื่องจากการมอบหมายที่ฉันต้องสร้างคลาสจากไฟล์ XSD คำอธิบายประกอบ 3 รายการเหล่านี้ค่อนข้างเฉพาะเจาะจงและมีแนวโน้มว่าจะไม่น่าสนใจสำหรับคุณในปัจจุบัน ฉันจะอธิบายคนสุดท้าย
Override — คุณใช้มันอย่างต่อเนื่องและมีประโยชน์มาก เมื่อแทนที่วิธีการหนึ่ง เป็นเรื่องง่ายที่จะทำผิดพลาดโดยไม่ได้รับความช่วยเหลือจาก IDEA ไม่ว่าจะพิมพ์ผิดหรือผิดพลาดง่าย ๆ ความผิดพลาดก็เกิดขึ้นได้ คำอธิบายประกอบนี้จะทำให้แน่ใจว่าเมธอดในคลาสพาเรนต์ตรงกับเมธอด (มีคำอธิบายประกอบ) ของเรา สิ่งนี้ทำให้มั่นใจได้ว่าวิธีการจะถูกแทนที่แทนที่จะเพิ่มเข้ามา เมื่อทำการ Refactor โค้ด วิธีการหลักอาจถูกลบหรือเปลี่ยนแปลง อีกครั้ง คำอธิบายประกอบนี้จะระบุข้อผิดพลาด หากปราศจากมัน วิธีการของเราก็จะถูกเพิ่มเข้ามา น่าเบื่อ? ฉันจะบอกว่าใช่ บทความนี้มีประโยชน์ไม่มากที่จะรวบรวม เกือบทุกอย่าง (90%) อธิบายถึงสิ่งที่คุณไม่เคยใช้หรือแทบจะไม่ใช้เลย ส่วนที่เหลืออีก 10% กำลังทักทายและอธิบายคำอธิบายประกอบ @Override ซึ่งเมื่อมองแวบแรกก็ไม่มีประโยชน์ ที่กล่าวว่าฉันคิดว่าในส่วนที่สองของบทความจะน่าสนใจมากขึ้น จะมีการหารือเกี่ยวกับคำอธิบายประกอบ RUNTIME — พวกเขาโต้ตอบกับรหัสระหว่างการดำเนินการและทำมนต์ดำ คำอธิบายประกอบ ตอนที่ 2 ลอมบอก

- แหล่งที่มา — คำอธิบายประกอบสำหรับคอมไพเลอร์
- CLASS — ข้อมูลจากคำอธิบายประกอบจะถูกเขียนเป็น bytecode แต่ไม่สามารถใช้ได้ในขณะรันไทม์ พวกเขากล่าวว่าไลบรารีมาตรฐานมีคำอธิบายประกอบประเภทนี้จำนวนมาก ซึ่งตอนนี้คงไว้สำหรับความเข้ากันได้แบบย้อนกลับ ใช้สำหรับงานที่เฉพาะเจาะจงมาก
- ถามตอบเกี่ยวกับ StackOverflow
- RUNTIME — คำอธิบายประกอบเหล่านี้เป็นที่นิยมมากที่สุด จะใช้ในขณะที่โค้ดถูกดำเนินการ
- java/lang/annotation/Native.class;
- java/lang/SuppressWarnings.class
- javax/annotation/Generated.class
- java/lang/Override.class
- com/sun/istack/internal/Nullable.class
- com/sun/istack/internal/NotNull.class
- com/sun/istack/internal/Interned.class
- เนทีฟ — ตัวแปรที่มีคำอธิบายประกอบนี้อาจอ้างถึงโค้ดเนทีฟ
- SuppressWarnings — คำอธิบายประกอบนี้ระงับคำเตือนของคอมไพเลอร์ต่างๆ
- สร้าง — คำอธิบายประกอบนี้ทำเครื่องหมายซอร์สโค้ดที่ถูกสร้างขึ้น
- Override — วิธีการตรวจสอบคำอธิบายประกอบนี้แทนที่
GO TO FULL VERSION