หากไม่มีวิธีการและงานในการอ่านคำอธิบายประกอบการเพิ่มความคิดเห็นจะไม่มีประโยชน์มากกว่าคำอธิบายประกอบ ส่วนสำคัญของกระบวนการใช้คำอธิบายประกอบถูกสร้างขึ้นโดยใช้ตัวประมวลผลคำอธิบายประกอบ Javase5 ขยายกลไกการสะท้อน API เพื่อช่วยให้โปรแกรมเมอร์สร้างโปรเซสเซอร์คำอธิบายประกอบที่กำหนดเองได้อย่างรวดเร็ว
ห้องสมุดคลาสโปรเซสเซอร์ที่มีคำอธิบายประกอบ (java.lang.reflect.annotatedElement):
Java ใช้อินเทอร์เฟซคำอธิบายประกอบเพื่อแสดงคำอธิบายประกอบที่ด้านหน้าขององค์ประกอบโปรแกรมซึ่งเป็นอินเทอร์เฟซหลักของคำอธิบายประกอบทั้งหมด นอกจากนี้ Java ยังได้เพิ่มอินเทอร์เฟซ AnnotatedElement ภายใต้แพ็คเกจ java.lang.reflect อินเทอร์เฟซนี้แสดงถึงองค์ประกอบของโปรแกรมที่สามารถยอมรับคำอธิบายประกอบในโปรแกรม ส่วนต่อประสานส่วนใหญ่มีคลาสการใช้งานต่อไปนี้:
คลาส: นิยามคลาส
ตัวสร้าง: นิยามตัวสร้าง
ฟิลด์: คำจำกัดความตัวแปรสมาชิกสะสม
วิธีการ: นิยามวิธีการของคลาส
แพ็คเกจ: คำจำกัดความแพ็คเกจของคลาส
แพ็คเกจ java.lang.reflect ส่วนใหญ่มีคลาสเครื่องมือบางส่วนที่ใช้ฟังก์ชั่นการสะท้อนกลับ ในความเป็นจริง APIs Reflection ทั้งหมดที่จัดทำโดยแพ็คเกจ java.lang.reflect ขยายความสามารถในการอ่านข้อมูลคำอธิบายประกอบรันไทม์ เมื่อประเภทคำอธิบายประกอบถูกกำหนดให้เป็นคำอธิบายประกอบที่รันไทม์คำอธิบายประกอบสามารถมองเห็นได้เมื่อรันไทม์เท่านั้นและคำอธิบายประกอบที่บันทึกไว้ในไฟล์คลาสเมื่อโหลดไฟล์คลาสจะถูกอ่านโดยเครื่องเสมือน
อินเทอร์เฟซ AnnotatedElement เป็นอินเทอร์เฟซหลักขององค์ประกอบโปรแกรมทั้งหมด (คลาส, วิธีการและตัวสร้าง) ดังนั้นหลังจากโปรแกรมได้รับวัตถุที่มีคำอธิบายประกอบของคลาสที่แน่นอนผ่านการสะท้อนกลับโปรแกรมสามารถเรียกใช้สี่วิธีต่อไปนี้ของวัตถุเพื่อเข้าถึงข้อมูลคำอธิบายประกอบ:
วิธีที่ 1: <TextEndSannotation> TGETANNOTATION (คลาส <t> AnnotationClass): ส่งคืนคำอธิบายประกอบของประเภทที่ระบุที่มีอยู่ในองค์ประกอบของโปรแกรม หากคำอธิบายประกอบของประเภทไม่มีอยู่ให้ส่งคืนค่า null
วิธีที่ 2: คำอธิบายประกอบ [] getannotations (): ส่งคืนคำอธิบายประกอบทั้งหมดที่มีอยู่ในองค์ประกอบโปรแกรม
วิธีที่ 3: booleanisannotationpresent (คลาส <? extreantation> AnnotationClass): กำหนดว่าองค์ประกอบของโปรแกรมมีคำอธิบายประกอบของประเภทที่ระบุหรือไม่ หากมีอยู่มันจะกลับมาเป็นจริงมิฉะนั้นมันจะกลับมาเป็นเท็จ
วิธีที่ 4: คำอธิบายประกอบ [] getDeclaredAnnotations (): ส่งคืนความคิดเห็นทั้งหมดที่มีอยู่โดยตรงในองค์ประกอบนี้ ซึ่งแตกต่างจากวิธีอื่น ๆ ในอินเทอร์เฟซนี้วิธีนี้จะไม่สนใจคำอธิบายประกอบที่สืบทอดมา (หากไม่มีความคิดเห็นโดยตรงในองค์ประกอบนี้อาร์เรย์ของความยาวจะถูกส่งคืน) ผู้โทรของวิธีการสามารถแก้ไขอาร์เรย์ที่ส่งคืนได้ตามต้องการ สิ่งนี้จะไม่มีผลกระทบใด ๆ ต่ออาร์เรย์ที่ส่งคืนโดยผู้โทรอื่น ๆ
โปรเซสเซอร์คำอธิบายประกอบแบบง่าย ๆ :
/******************* การประกาศคำอธิบายประกอบ ********************* // ***ชื่อผลไม้คำอธิบายประกอบ*@author peida**/ @target (ElementType.field) @retention * */ @Target (ElementType.field) @retention (RetentionPolicy.runtime) @DocumentedPublic @Interface FruitColor {/** * enum สี * @author peida */public enum สี {bule, สีแดง, สีเขียว}; คำอธิบายประกอบ* @author peida**/ @target (ElementType.field) @retention (RetentionPolicy.runtime) @DocumentedPublic @interface FruitProvider {/*** หมายเลขซัพพลายเออร์* @return*/Public Int ID () @@Return Name*/ ที่อยู่สตริง () ค่าเริ่มต้น "";}/**************** การใช้คำอธิบายประกอบ ********************/แอปเปิ้ลระดับสาธารณะ {@fruitName ("Apple") applename ส่วนตัว; อาคาร, หมายเลข 89, ถนน Yan'an, Xi'an City, Shaanxi Province ") Private String Appleprovider; โมฆะสาธารณะ setappleColor (สตริง applecolor) {this.applecolor = appleColor;} public String getapplecolor () {return applecolor; getApPlename () {return applename;} โมฆะสาธารณะ setappleProvider (String AppleProvider) {this.appleProvider = AppleProvider;} Public String GetAppleProvider () {return AppleProvider; โปรเซสเซอร์ ***********************/public class fruitinfoutil {โมฆะคงที่สาธารณะ getfruitinfo (คลาส <?> clazz) {string strfruitname = "ชื่อผลไม้:" String strfruitcolor = "Fruit Color:" String strfruitprovicer = "ข้อมูลซัพพลายเออร์ : ฟิลด์) {ถ้า (field.isannotationpresent (fruitname.class)) {fruitname fruitname = (fruitname) field.getannotation (fruitname.class); strfruitname = strfruitname+fruitname.value (); if (field.isannotationpresent (FruitColor.class)) {FruitColor FruitColor = (FruitColor) Field.GetNanTation (FruitColor.class); strfruitcolor = strfruitcolor+fruitcolor.fruitcolor () tostring (); if (field.isannotationpresent (FruitProvider.class)) {FruitProvider FruitProvider = (FruitProvider) Field.getNanotation (FruitProvider.class); strfruitProvicer = "หมายเลขซัพพลายเออร์:"+FruitProvider.id () "+fruitprovider.address (); system.out.println (strfruitprovicer);}}}}/***************** ผลผลลัพธ์ ******************************************************************************** {FruitInfoutil.getFruitInfo (Apple.class);}} ========================================================= อาคาร Hongfuji, หมายเลข 89, ถนน Yan'an, เมือง Xi'an, จังหวัด Shaanxiฉันได้อ่านจุดความรู้พื้นฐานของคำอธิบายประกอบ Java (ดูแผนที่ด้านล่าง) ในบทความถัดไปเราออกแบบกรอบ ORM ที่เรียบง่ายโดยใช้คำอธิบายประกอบเพื่อนำไปใช้อย่างครอบคลุมและเพิ่มความเข้าใจและการใช้จุดความรู้ต่าง ๆ ของคำอธิบายประกอบที่ลึกซึ้งยิ่งขึ้น
สรุป
ข้างต้นเป็นตัวอย่างง่ายๆของโปรเซสเซอร์คำอธิบายประกอบ Java ในบทความนี้ฉันหวังว่ามันจะเป็นประโยชน์กับทุกคน เพื่อนที่สนใจสามารถอ้างถึงหัวข้ออื่น ๆ ที่เกี่ยวข้องในเว็บไซต์นี้ต่อไป หากมีข้อบกพร่องใด ๆ โปรดฝากข้อความไว้เพื่อชี้ให้เห็น ขอบคุณเพื่อนที่ให้การสนับสนุนเว็บไซต์นี้!