คำอธิบายประกอบ Java ให้ข้อมูลบางอย่างเกี่ยวกับรหัส แต่ไม่ส่งผลกระทบโดยตรงต่อเนื้อหารหัสที่มีคำอธิบายประกอบ ในบทช่วยสอนนี้เราจะได้เรียนรู้เกี่ยวกับคำอธิบายประกอบ Java วิธีปรับแต่งคำอธิบายประกอบการใช้คำอธิบายประกอบและวิธีการแยกวิเคราะห์คำอธิบายประกอบผ่านการสะท้อน
Java 1.5 แนะนำคำอธิบายประกอบและเฟรมเวิร์ก Java จำนวนมากในปัจจุบันใช้คำอธิบายประกอบอย่างกว้างขวางเช่นไฮเบอร์เนตเจอร์ซีย์และฤดูใบไม้ผลิ คำอธิบายประกอบถูกฝังอยู่ในโปรแกรมเป็นข้อมูลเมตาของโปรแกรม คำอธิบายประกอบสามารถแยกวิเคราะห์ได้ด้วยเครื่องมือแยกวิเคราะห์หรือเครื่องมือรวบรวม นอกจากนี้เรายังสามารถประกาศได้ว่าคำอธิบายประกอบมีผลในระหว่างการรวบรวมหรือดำเนินการ
ก่อนที่จะใช้คำอธิบายประกอบข้อมูลแหล่งที่มาของโปรแกรมจะต้องผ่านคำอธิบายประกอบ Java และ Javadoc เท่านั้น แต่คำอธิบายประกอบนั้นให้มากกว่าสิ่งเหล่านี้ คำอธิบายประกอบไม่เพียง แต่มีข้อมูลเมตาเท่านั้น แต่ยังสามารถดำเนินการตามลำดับการดำเนินการของโปรแกรม คำอธิบายประกอบล่ามสามารถแก้คำสั่งการดำเนินการของโปรแกรมผ่านคำอธิบายประกอบ ตัวอย่างเช่นใน Jersey Webservice เราเพิ่มเส้นทาง ** คำอธิบายประกอบ ** ในรูปแบบของสตริง URI ไปยังวิธีการจากนั้นในระหว่างการทำงานโปรแกรมล่าม Jerser จะกำหนดว่าวิธีการจะเรียก URI ที่กำหนด
สร้างคำอธิบายประกอบที่กำหนดเอง Java
การสร้างคำอธิบายประกอบแบบกำหนดเองนั้นคล้ายคลึงกับการสร้างอินเทอร์เฟซ แต่คำหลักอินเตอร์เฟสคำอธิบายประกอบต้องเริ่มต้นด้วยสัญลักษณ์ @ เราสามารถประกาศวิธีการสำหรับคำอธิบายประกอบ ก่อนอื่นลองดูตัวอย่างคำอธิบายประกอบจากนั้นเราจะพูดถึงลักษณะบางอย่างของมัน
แพ็คเกจ com.journaldev.annotations; นำเข้า java.lang.annotation.documented; นำเข้า java.lang.annotation.elementtype; นำเข้า java.lang.annotation.inherited; นำเข้า java.lang.annotation.retention; นำเข้า java.lang.annotation.retention @Documented@Target (ElementType.method)@สืบทอด@retention (RETINGINTPOLICY.RUNTIME) Public @Interface MethodInfo {String Author () ค่าเริ่มต้น 'pankaj'; วันที่สตริง (); Int Revision () ค่าเริ่มต้น 1; ความคิดเห็นสตริง ();} วิธีการเพิ่มความคิดเห็นไม่สามารถพกพาพารามิเตอร์ได้
ประเภทค่าส่งคืนของวิธีการอธิบายประกอบถูก จำกัด ไว้ที่: ประเภทพื้นฐาน, สตริง, enums, คำอธิบายประกอบหรืออาร์เรย์ของประเภทเหล่านี้;
วิธีการเพิ่มความคิดเห็นอาจมีค่าเริ่มต้น
คำอธิบายประกอบตัวเองสามารถมีคำอธิบายประกอบเมตาซึ่งใช้ในการใส่คำอธิบายประกอบคำอธิบายประกอบอื่น ๆ
นี่คือ คำอธิบายประกอบเมตาสี่ประเภท :
1. @documented - ระบุว่าองค์ประกอบที่มีคำอธิบายประกอบนี้สามารถบันทึกไว้ด้วยเครื่องมือเช่น Javadoc ประเภทนี้ควรใช้เพื่อใส่คำอธิบายประกอบประเภทเหล่านั้นที่มีผลต่อการประกาศของลูกค้าในการใช้องค์ประกอบที่มีคำอธิบายประกอบ หากมีการประกาศคำอธิบายประกอบโดยใช้เอกสารบันทึกคำอธิบายประกอบประเภทนี้จะใช้เป็น API สาธารณะสำหรับสมาชิกโปรแกรมที่มีคำอธิบายประกอบ
2. @Target - ระบุขอบเขตขององค์ประกอบโปรแกรมที่คำอธิบายประกอบของประเภทนี้สามารถเพิ่มคำอธิบายประกอบได้ ค่าของคำอธิบายประกอบ meta นี้สามารถพิมพ์, วิธี, ตัวสร้าง, ฟิลด์, ฯลฯ หากคำอธิบายประกอบเมตาเป้าหมายไม่ปรากฏขึ้นคำอธิบายประกอบที่กำหนดสามารถนำไปใช้กับองค์ประกอบใด ๆ ของโปรแกรม
3. @Inherited - ระบุว่าประเภทคำอธิบายประกอบนั้นได้รับการสืบทอดโดยอัตโนมัติ หากผู้ใช้สอบถามประเภทคำอธิบายประกอบเมตานี้ในคลาสปัจจุบันและการประกาศของคลาสปัจจุบันไม่มีประเภทคำอธิบายประกอบเมตานี้จะทำการสอบถามโดยอัตโนมัติว่าคลาสแม่ของคลาสปัจจุบันมีคำอธิบายประกอบเมตาที่สืบทอดมา การกระทำนี้จะถูกทำซ้ำเพื่อทราบว่าพบประเภทคำอธิบายประกอบหรือคลาสแม่ที่อยู่ในระดับบนสุด
4.@retention - ระบุระยะเวลาที่มีการบันทึกคำอธิบายประกอบไว้ ค่า RetentionPolicy คือแหล่งที่มาคลาสรันไทม์
คำอธิบายประกอบในตัว Java
Java มีคำอธิบายประกอบในตัวสามรายการ
1. @Override - เมื่อเราต้องการเขียนวิธีการใหม่ในคลาสพาเรนต์เราต้องใช้คำอธิบายประกอบนี้เพื่อแจ้งคอมไพเลอร์ว่าเราต้องการเขียนวิธีนี้ใหม่ วิธีนี้คอมไพเลอร์จะแจ้งข้อความแสดงข้อผิดพลาดเมื่อเมธอดในคลาสพาเรนต์ถูกลบออกหรือการเปลี่ยนแปลงเกิดขึ้น
2. @deprecated - เมื่อเราต้องการให้คอมไพเลอร์รู้ว่าไม่แนะนำวิธีการเราควรใช้คำอธิบายประกอบนี้ Java แนะนำคำอธิบายประกอบนี้ใน Javadoc เราควรให้วิธีการที่ไม่แนะนำวิธีนี้และวิธีการอื่น
3. @suppresswarnings - นี่เป็นเพียงการบอกให้คอมไพเลอร์เพิกเฉยต่อข้อความเตือนที่เฉพาะเจาะจงเช่นการใช้ประเภทข้อมูลดั้งเดิมในทั่วไป นโยบายการเก็บรักษาของมันคือแหล่งที่มา (หมายเหตุของนักแปล: ถูกต้องในไฟล์ต้นฉบับ) และถูกทิ้งโดยคอมไพเลอร์
ลองมาดูตัวอย่างของคำอธิบายประกอบในตัวใน Java โปรดดูคำอธิบายประกอบที่กำหนดเองที่กล่าวถึงข้างต้น
แพ็คเกจ com.journaldev.annotations; นำเข้า java.io.filenotfoundexception; นำเข้า java.util.arraylist; นำเข้า java.util.list; Public Class AnnotationExample {Public Static Void Main (String [] args) {} @override @methodInfo (ผู้แต่ง = 'pankaj', ความคิดเห็น = 'วิธีหลัก', วันที่ = 'พ.ย. 17 2012', การแก้ไข = 1) สตริงสาธารณะ toString () 2012 ') โมฆะสาธารณะคงที่ oldmethod () {system.out.println (' วิธีเก่าอย่าใช้มัน ');} @suppresswarnings ({' unchecked ',' deprecation '}) @methodinfo (ผู้เขียน =' pankaj ' FilenotFoundException {list l = new ArrayList (); L.Add ('ABC'); oldMethod ();}}ฉันเชื่อว่าตัวอย่างนี้สามารถอธิบายตนเองได้และสามารถแสดงในสถานการณ์ต่าง ๆ
การวิเคราะห์คำอธิบายประกอบ Java
เราจะใช้เทคโนโลยีการสะท้อนเพื่อแยกวิเคราะห์คำอธิบายประกอบของคลาส Java จากนั้นควรตั้งค่าการเก็บรักษาคำอธิบายประกอบให้เป็นรันไทม์มิฉะนั้นข้อมูลคำอธิบายประกอบของคลาส Java จะไม่สามารถใช้งานได้ในระหว่างการดำเนินการดังนั้นเราจึงไม่สามารถรับข้อมูลใด ๆ ที่เกี่ยวข้องกับคำอธิบายประกอบได้
แพ็คเกจ com.journaldev.annotations; นำเข้า java.lang.annotation.annotation; นำเข้า java.lang.reflect.method; Public Class AnnotationParsing {public static void main (string [] args) {ลอง {สำหรับ (วิธีการ (วิธีการ: Annotationparsing.class .getClassLoader () .loadclass (('com.journalev.annotations.annotationexample')) (method.isannotationpresent (com.journalev.annotations.methodinfo.class)) {ลอง {// iterates คำอธิบายประกอบทั้งหมดที่มีอยู่ในวิธีการ (คำอธิบายประกอบ Anno: method.getDeclaredannotations ()) {system.out.println ( } methodInfo methodanno = method.getNanotation (methodInfo.class); if (methodanno.revision () == 1) {system.out.println ('วิธีการที่มีการแก้ไขหมายเลข 1 ='+ เมธอด); }} catch (throwable ex) {ex.printstacktrace (); }}}} catch (SecurityException | classnotFoundException e) {E.printStackTrace (); - การรันโปรแกรมด้านบนจะส่งออก:
คำอธิบายประกอบในวิธี 'สาธารณะ java.lang.string com.journaldev.annotations.annotationexample.toString ()': @com.journalev.annotations.methodinfo (ผู้เขียน = Pankaj, Revision = 1, ความคิดเห็น = วิธีการหลัก com.journaldev.annotations.annotationexample.toString () คำอธิบายประกอบในวิธีการ 'โมฆะคงที่สาธารณะ com.journaldev.annotations.annotationexample.oldmethod ()': @java.lang.deprecated () @com.journaldev.annotations.methodinfo (ผู้แต่ง = pankaj, การแก้ไข = 1, ความคิดเห็น = วิธีการเลิกจ้าง, วันที่ = พ.ย. 17 2012) วิธีการที่มีการแก้ไขหมายเลข 1 = โมฆะสาธารณะคง java.io.filenotfoundexception ': @com.journaldev.annotations.methodinfo (ผู้แต่ง = Pankaj, Revision = 10, ความคิดเห็น = วิธีหลัก, วันที่ = 17 พฤศจิกายน 2012)
นั่นคือทั้งหมดที่เกี่ยวกับบทช่วยสอนนี้และหวังว่าคุณจะได้เรียนรู้บางสิ่งจากมัน