คำอธิบายประกอบการเก็บรักษา
คำอธิบายประกอบการเก็บรักษาจะระบุว่าคำอธิบายประกอบประเภทนี้จะถูกเก็บไว้ที่ระยะใด
1.RetentionPolicy.SOURCE - คำอธิบายประกอบประเภทนี้จะถูกเก็บไว้ที่ระดับซอร์สโค้ดเท่านั้น และจะถูกละเว้นในระหว่างการคอมไพล์
2.RetentionPolicy.CLASS - คำอธิบายประกอบประเภทนี้จะถูกเก็บไว้ในระหว่างการคอมไพล์และมีอยู่ในไฟล์คลาส แต่ JVM จะเพิกเฉยต่อมัน
3.RetentionPolicy.RUNTIME - คำอธิบายประกอบประเภทนี้จะถูกเก็บไว้โดย JVM เพื่อให้สามารถอ่านและใช้งานได้โดย JVM หรือโค้ดอื่น ๆ โดยใช้กลไกการสะท้อนกลับที่รันไทม์
ตัวอย่างที่ 5 แสดงให้เห็นถึงการประกาศ RetentionPolicy.RUNTIME:
ตัวอย่างที่ 1 ของคำอธิบายประกอบ Java:
คัดลอกรหัสรหัสดังต่อไปนี้:
@การเก็บรักษา (RetentionPolicy.RUNTIME)
สาธารณะ @interface Test_Retention {
สตริง doTestRetention();
-
ในตัวอย่างนี้ คำอธิบายประกอบ @Retention(RetentionPolicy.RUNTIME) บ่งชี้ว่าคำอธิบายประกอบ Test_Retention จะถูกเก็บรักษาไว้โดยเครื่องเสมือน เพื่อให้สามารถอ่านผ่านการสะท้อนกลับ ณ รันไทม์ได้
คำอธิบายประกอบที่จัดทำเป็นเอกสาร
คำอธิบายประกอบแบบ Documented ระบุว่าคำอธิบายประกอบนี้ควรถูกบันทึกโดยเครื่องมือ javadoc โดยค่าเริ่มต้น javadoc จะไม่รวมคำอธิบายประกอบไว้ด้วย แต่หากมีการระบุ @Documented เมื่อประกาศคำอธิบายประกอบนั้น จะถูกประมวลผลโดยเครื่องมือ เช่น javadoc ดังนั้นข้อมูลประเภทคำอธิบายประกอบ จะรวมอยู่ในเอกสารที่สร้างขึ้นด้วย ตัวอย่างที่ 6 สาธิตการใช้งาน @Documented เพิ่มเติม:
ตัวอย่างที่ 2 ของคำอธิบายประกอบ Java:
คัดลอกรหัสรหัสดังต่อไปนี้:
@จัดทำเป็นเอกสาร
สาธารณะ @interface Test_Documented {
สตริง doTestDocument();
-
ถัดไป แก้ไขคลาส TestAnnotations ดังนี้:
คัดลอกรหัสรหัสดังต่อไปนี้:
TestAnnotations ระดับสาธารณะ {
โมฆะคงที่สาธารณะ main (String arg []) {
ใหม่ TestAnnotations().doSomeTestRetention();
TestAnnotations ใหม่ (). doSomeTestDocumented ();
-
@Test_Retention (doTestRetention="เก็บการทดสอบข้อมูลคำอธิบายประกอบ")
โมฆะสาธารณะ doSomeTestRetention () {
System.out.printf("ประเภทคำอธิบายประกอบการทดสอบ 'การเก็บรักษา'");
-
@Test_Documented(doTestDocument="สวัสดีเอกสาร")
โมฆะสาธารณะ doSomeTestDocumented () {
System.out.printf("ประเภทคำอธิบายประกอบการทดสอบ 'Documented'");
-
-
ตอนนี้ หากคุณใช้คำสั่ง javadoc เพื่อสร้างไฟล์ TestAnnotations.html คุณจะเห็นผลลัพธ์คล้ายกับรูปที่ 1
ดังที่คุณเห็นจากภาพหน้าจอ ไม่มีวิธีการ doSomeTestRetention() ในเอกสาร อย่างไรก็ตาม เอกสารของวิธีการ doSomeTestDocumented() จะให้ข้อมูลคำอธิบายของคำอธิบายประกอบ แท็ก @Documented ถูกเพิ่มลงในคำอธิบายประกอบ Test_Documented คำอธิบายประกอบก่อนหน้านี้ Test_Retention ไม่ได้ระบุแท็ก @Documented
คำอธิบายประกอบที่สืบทอดมา (อาจมีบางอย่างผิดปกติกับย่อหน้านี้...)
นี่เป็นประเภทคำอธิบายประกอบที่ซับซ้อนกว่าเล็กน้อย โดยระบุว่าคลาสที่มีคำอธิบายประกอบจะสืบทอดโดยอัตโนมัติ หากใช้แท็ก @Inherited เมื่อกำหนดคำอธิบายประกอบ จากนั้นคำอธิบายประกอบที่กำหนดจะถูกนำมาใช้เพื่ออธิบายประกอบคลาสพาเรนต์อื่น มีคลาสย่อย ดังนั้นคุณสมบัติทั้งหมดของคลาสพาเรนต์จะถูกสืบทอดไปยังคลาสย่อยของมัน ในตัวอย่างที่ 7 คุณจะเห็นประโยชน์ของการใช้แท็ก @Inherited
ตัวอย่างที่ 3 ของคำอธิบายประกอบ Java
ขั้นแรก ให้กำหนดคำอธิบายประกอบของคุณ:
คัดลอกรหัสรหัสดังต่อไปนี้:
@สืบทอดมา
สาธารณะ @interface MyParentObject {
บูลีน isInherited() ค่าเริ่มต้นเป็นจริง;
สตริง doSomething() ค่าเริ่มต้น "ทำอะไร";
-
ถัดไป ชั้นเรียนจะถูกใส่คำอธิบายประกอบด้วยคำอธิบายประกอบ:
คัดลอกรหัสรหัสดังต่อไปนี้:
@MyParentObject
คลาสสาธารณะ MyChildObject {
-
อย่างที่คุณเห็น คุณไม่จำเป็นต้องกำหนดวิธีการอินเทอร์เฟซในคลาสการใช้งาน เนื่องจากแท็ก @Inherited สิ่งเหล่านี้จึงสืบทอดมาโดยอัตโนมัติ หากคุณใช้วิธีโบราณในการกำหนดคลาสการใช้งาน ดูด้านล่าง นี่เป็นการดำเนินการแบบโบราณ:
คัดลอกรหัสรหัสดังต่อไปนี้:
MyChildObject คลาสสาธารณะใช้ MyParentObject {
บูลีนสาธารณะ isInherited () {
กลับเท็จ;
-
สตริงสาธารณะ doSomething() {
กลับ "";
-
บูลีนสาธารณะเท่ากับ (Object obj) {
กลับเท็จ;
-
hashCode int สาธารณะ () {
กลับ 0;
-
สตริงสาธารณะ toString() {
กลับ "";
-
คำอธิบายประกอบคลาสสาธารณะ () {
กลับเป็นโมฆะ;
-
-
คุณเห็นความแตกต่างหรือไม่ อย่างที่คุณเห็น คุณต้องใช้เมธอดทั้งหมดของอินเทอร์เฟซหลัก นอกจากเมธอด isInherited() และ doSomething() จาก myParentObject แล้ว คุณยังต้องใช้เมธอดเท่ากับ(), toString( ) และเมธอด hasCode() นอกจากนี้ยังมีเมธอด annotationType() ของคลาส java.lang.annotation.Annotation ไม่ว่าคุณต้องการนำเมธอดเหล่านี้ไปใช้หรือไม่ คุณต้องรวมสิ่งเหล่านี้ไว้ในอ็อบเจ็กต์ที่สืบทอดมา
สรุปแล้ว
บทความนี้แสดงวิธีทำให้การพัฒนาง่ายขึ้นโดยใช้คุณลักษณะคำอธิบายประกอบของ JDK5 คำอธิบายประกอบไม่ส่งผลโดยตรงต่อความหมายของโปรแกรม เครื่องมือการพัฒนาและการปรับใช้สามารถอ่านคำอธิบายประกอบเหล่านี้และประมวลผลด้วยวิธีหนึ่ง และใช้โปรแกรมที่มีคำอธิบายประกอบ สามารถแทนที่ไฟล์ต้นฉบับ Java เอกสาร XML หรือสิ่งประดิษฐ์โบราณอื่น ๆ ได้ การใช้คำอธิบายประกอบสามารถบรรลุผลเช่นเดียวกันโดยใช้โค้ดน้อยลงและมีการตรวจจับข้อผิดพลาดในเวลาคอมไพล์ที่ดีกว่า วัตถุประสงค์ของคำอธิบายประกอบคือการใช้เวลาน้อยลงกับรายละเอียดที่ยากและไร้ประโยชน์ และมุ่งเน้นไปที่กฎตรรกะทางธุรกิจมากขึ้น บทความนี้เป็นส่วนแรกของชุดคำอธิบายประกอบ Java ในส่วนที่สอง คุณจะได้เรียนรู้วิธีใช้คำอธิบายประกอบเพื่อพัฒนาคำอธิบายประกอบแบบง่าย เว็บแอปพลิเคชัน สุดท้ายนี้ ในส่วนที่สาม คุณจะเห็นตัวอย่างที่ซับซ้อนซึ่งมีตารางฐานข้อมูลหลายตาราง