1. ภาพรวม
คำอธิบายประกอบสามารถกำหนดได้ในชั้นเรียน
คำอธิบายประกอบที่ใช้กันทั่วไป:
@Override: หมายถึงวิธีการเรียนใหม่
สิ่งนี้ยังสามารถพิจารณาได้ว่าวิธีการที่เขียนขึ้นมา วิธีการของคลาสแม่ที่เขียนทับ
@suppresswarnings ("การเสื่อมราคา"): ยกเลิกคำเตือนของคอมไพเลอร์ (ตัวอย่างเช่นวิธีที่คุณใช้นั้นล้าสมัย)
@Deprecated: คำสั่งนี้ยังวางไว้ที่ด้านบนของวิธีการแสดงว่าวิธีนี้ล้าสมัยหรือใช้ในชั้นเรียน
การคัดลอกรหัสมีดังนี้:
นำเข้า java.util.arraylist;
นำเข้า java.util.list;
AnnotationDemo ชั้นเรียนสาธารณะ {
-
* สำหรับคอลเลกชันหากไม่มีการระบุประเภทที่เก็บข้อมูลจะมีคำเตือนด้านความปลอดภัย
* หากคุณไม่ต้องการแจ้งเตือนความปลอดภัยให้เพิ่ม @suppresswarnings (พารามิเตอร์) ในชั้นเรียนหรือวิธีการ
-
@suppresswarnings ("ไม่ได้ตรวจสอบ")
โมฆะคงที่สาธารณะหลัก (สตริง [] args) {
รายการรายการ = new ArrayList ();
-
-
2. คำอธิบายประกอบแบบกำหนดเอง
1. รูปแบบ
ชื่อ Permissions @Interface Annotation {}
ขั้นตอน:
กำหนดคลาสคำอธิบายประกอบ ---> กำหนดคลาสของคลาสคำอธิบายประกอบของแอปพลิเคชัน ---> คลาสที่สะท้อนคลาสของคลาส Application Annotation (คลาสนี้สามารถกำหนดแยกต่างหากหรือทดสอบในคลาส Application Annotation)
การคัดลอกรหัสมีดังนี้:
นำเข้า java.lang.annotation.retention;
importJava.lang.annotation.RetentionPolicy;
// กำหนดคำอธิบายประกอบนี้ที่จะเก็บไว้ใน bytecode
@Retention (RetentionPolicy.runtime)
สาธารณะ @interface myannotation {
-
@myannotation
// คลาสคำอธิบายประกอบที่กำหนดโดยแอปพลิเคชัน
คลาสสาธารณะใช้งาน MYANNOTATION {
โมฆะคงที่สาธารณะหลัก (สตริง [] args) {
if (applymyannotation.class.isannotationpresent (myannotation.class)) {// พิจารณาว่ามีคลาสคำอธิบายประกอบที่ระบุในคลาสนี้
myannotation Annotation = (myannotation) applymyannotation.class
.getNanotation (myannotation.class);
System.out.println (คำอธิบายประกอบ);
-
-
-
2. วงจรการประกาศ
รูปแบบ: ตัวอย่าง: @retention (RetentionPolicy.class)
กำหนดวัฏจักรในคลาสคำอธิบายประกอบที่กำหนดเอง @retention (ประเภทพารามิเตอร์) ประเภทพารามิเตอร์คือ REATINGINGPOLICY
RetentionPolicy.class: ในไฟล์คลาสเครื่องเสมือนไม่เก็บคำอธิบายประกอบไว้ในระหว่างการรันไทม์
RetentionPolicy.runtime: ในไฟล์คลาสความคิดเห็นเสมือนจะถูกเก็บไว้ในระหว่างการรันไทม์
RetentionPolicy.Source: บนไฟล์ต้นฉบับทิ้งคำอธิบายประกอบ
การปราบปรามและการแทนที่คือการเก็บรักษานโยบาย
ไร้เดียงสาอยู่ในการเก็บรักษานโยบาย
ค่าเริ่มต้นคือ RetentionPolicy.class:
3. ระบุเป้าหมาย
รูปแบบ: ตัวอย่าง: วิธีการ @Target (ElementType.Method)
สมาชิกสามารถใส่คำอธิบายประกอบได้โดยคำอธิบายประกอบที่กำหนดไว้ หากไม่ได้ประกาศคำอธิบายประกอบนี้ก็สามารถวางไว้ในองค์ประกอบของโปรแกรมใด ๆ
มันสามารถเป็นแพ็คเกจ, อินเทอร์เฟซ, พารามิเตอร์, วิธี, ตัวแปรท้องถิ่น, ฟิลด์, ฯลฯ
การคัดลอกรหัสมีดังนี้:
// กำหนดคำอธิบายประกอบนี้ที่จะเก็บไว้ใน bytecode
@Retention (RetentionPolicy.runtime)
@Target ({ElementType.Method, ElementType.type}) // สามารถกำหนดได้ในวิธีการและคลาสเพื่อแสดงประเภท
สาธารณะ @interface myannotation {
-
@myannotation
// คลาสคำอธิบายประกอบที่กำหนดโดยแอปพลิเคชัน
คลาสสาธารณะใช้งาน MYANNOTATION {
@myannotation // กำหนดไว้ในวิธีการ
โมฆะคงที่สาธารณะหลัก (สตริง [] args) {
if (applymyannotation.class.isannotationpresent (myannotation.class)) {// พิจารณาว่ามีคลาสคำอธิบายประกอบที่ระบุในคลาสนี้
myannotation Annotation = (myannotation) applymyannotation.class
.getNanotation (myannotation.class);
System.out.println (คำอธิบายประกอบ);
-
-
-
3. เพิ่มแอตทริบิวต์ให้กับคำอธิบายประกอบ
1. พิมพ์
การตั้งค่าแอตทริบิวต์ของคำอธิบายประกอบสามารถ: 8 ประเภทข้อมูลพื้นฐาน, สตริง, การแจงนับ, คำอธิบายประกอบ, คลาส, ประเภทอาร์เรย์,
2. ให้ความสนใจ
หากมีแอตทริบิวต์เดียวในคำอธิบายประกอบหรือแอตทริบิวต์เดียวเท่านั้นที่จะต้องได้รับการกำหนดจะสามารถเขียนได้โดยตรงเมื่อเรียกโดยไม่ระบุชื่อแอตทริบิวต์
เมื่อแอตทริบิวต์คำอธิบายประกอบเป็นประเภทอาร์เรย์และค่าเดียวเท่านั้นที่ได้รับมอบหมายเมื่อได้รับการกำหนด {} สามารถละเว้นได้
3. ตัวอย่าง
3.1. ประเภทประเภท (คือสตริง)
การคัดลอกรหัสมีดังนี้:
นำเข้า java.lang.annotation.ElementType;
นำเข้า java.lang.annotation.retention;
นำเข้า java.lang.annotation.RetentionPolicy;
นำเข้า java.lang.annotation.*;
// กำหนดคำอธิบายประกอบนี้ที่จะเก็บไว้ใน bytecode
@Retention (RetentionPolicy.runtime)
สาธารณะ @interface myannotation {
ค่าสตริง ();
String color () ค่าเริ่มต้น "สีแดง"; // ตั้งค่าเริ่มต้นคือ "สีแดง"
-
@myannotation ("java")
คลาสสาธารณะใช้งาน MYANNOTATION {
โมฆะคงที่สาธารณะหลัก (สตริง [] args) {
-
* นี่คือการได้รับคำอธิบายประกอบในชั้นเรียนและคุณยังสามารถรับคำอธิบายประกอบได้ในวิธีการ
-
if (applymyannotation.class.isannotationpresent (myannotation.class)) {// พิจารณาว่ามีคลาสคำอธิบายประกอบที่ระบุในคลาสนี้
myannotation Annotation = (myannotation) applymyannotation.class
.getNanotation (myannotation.class);
System.out.println ("value ="+Annotation.value ());
System.out.println ("color ="+Annotation.color ());
-
-
-
ผลลัพธ์:
ค่า = Java
สี = สีแดง
จากโปรแกรมการโทรยังสามารถเห็นได้ว่าหากสามารถกำหนดแอตทริบิวต์เดียวเท่านั้นชื่อแอตทริบิวต์สามารถละเว้นได้ มิฉะนั้น @ คลาสคำอธิบายประกอบ (ชื่อแอตทริบิวต์ = ค่า)
3.2.
การคัดลอกรหัสมีดังนี้:
/*คลาส enum*/
สัปดาห์สาธารณะ enum {
ดวงอาทิตย์, จันทร์;
-
-
* คลาสคำอธิบายประกอบ
-
Public @Interface AnnotationText {
ค่าสตริง ();
-
นำเข้า java.lang.annotation.ElementType;
นำเข้า java.lang.annotation.retention;
นำเข้า java.lang.annotation.RetentionPolicy;
นำเข้า java.lang.annotation.*;
// กำหนดคำอธิบายประกอบนี้ที่จะเก็บไว้ใน bytecode
@Retention (RetentionPolicy.runtime)
สาธารณะ @interface myannotation {
ค่าสตริง ();
String color () ค่าเริ่มต้น "สีแดง"; // ตั้งค่าเริ่มต้นคือ "สีแดง"
Week Week () Default Week.mon; // enum type
int [] array () ค่าเริ่มต้น {1,2,3}; // ประเภทอาร์เรย์
AnnotationText Annotation () ค่าเริ่มต้น @AnnotationText ("My");
คลาสคลาสเด็ม () ค่าเริ่มต้นจำนวนเต็ม class; // ประเภทคลาส
-
@myannotation (value = "java", color = "green", สัปดาห์ = สัปดาห์ซัน, array = 5, คำอธิบายประกอบ =@AnnotationText ("คุณ"), classDemo = string.class) // array = {4,5, 6}
คลาสสาธารณะใช้งาน MYANNOTATION {
โมฆะคงที่สาธารณะหลัก (สตริง [] args) {
-
* นี่คือการได้รับคำอธิบายประกอบในชั้นเรียนและคุณยังสามารถรับคำอธิบายประกอบได้ในวิธีการ
-
if (applymyannotation.class.isannotationpresent (myannotation.class)) {// ตรวจสอบว่ามีคลาสคำอธิบายประกอบที่ระบุในคลาสนี้
myannotation Annotation = (myannotation) applymyannotation.class
.getNanotation (myannotation.class);
System.out.println ("value ="+Annotation.value ());
System.out.println ("color ="+Annotation.color ());
System.out.println ("Week ="+Annotation.week ());
System.out.println ("array length ="+Annotation.array (). ความยาว);
System.out.println ("ค่าประเภทคำอธิบายประกอบ ="+Annotation.annotation (). value ());
System.out.println ("ค่าประเภทคลาส ="+Annotation.classDemo ());
-
-
-
ผลลัพธ์:
การคัดลอกรหัสมีดังนี้:
ค่า = Java
สี = สีเขียว
สัปดาห์ = ดวงอาทิตย์
ความยาวอาร์เรย์ = 1
ค่าประเภทคำอธิบายประกอบ = คุณ
ค่าประเภทคลาส = classjava.lang.string
4. คำอธิบายประกอบเกี่ยวกับวิธีการ
การคัดลอกรหัสมีดังนี้:
importJava.lang.annotation.Retention;
importJava.lang.annotation.RetentionPolicy;
-
*คลาสคำอธิบายประกอบ
-
@Retention (RetentionPolicy.runtime)
Public @Interface AnnotationText {
StringValue ();
-
publicclassapplymyannotation {
PublicStaticVoidMain (String [] args) ThrowSexception {
MethodMethodshow = ApplyMyannotation.class.getMethod ("แสดง");
AnnotationTextanno = MethodShow.getAnnotation (AnnotationText.class);
System.out.println (anno.value ());
-
@AnnotationText ("Java")
publicvoidshow () {
System.out.println ("สวัสดี");
-
-
ผลลัพธ์: Java