คำอธิบายประกอบใน Java: ประเภท การใช้และตัวอย่าง

เผยแพร่แล้ว: 2022-05-19

คำอธิบายประกอบในภาษาการเขียนโปรแกรม เช่น Java หมายถึงเมตาดาต้าของวากยสัมพันธ์ที่สามารถรวมเข้ากับซอร์สโค้ดของ Java ได้ ปัจจัยต่างๆ เช่น แพ็คเกจ Java ตัวแปร คลาส พารามิเตอร์ และเมธอดสามารถใส่คำอธิบายประกอบได้ นักพัฒนาสามารถอ่านหมายเหตุประกอบ Java ได้โดยตรงจากไฟล์ต้นฉบับ เช่นเดียวกับแท็ก Javadoc

นอกจากนี้ยังสามารถรวมหมายเหตุประกอบ Java และอ่านจากไฟล์คลาส Java เอาต์พุตของคอมไพเลอร์ Java ซึ่งช่วยให้เครื่องเสมือน Java สามารถรักษาคำอธิบายประกอบและอ่านผ่านการสะท้อนในขณะใช้งาน ใน Java สามารถสร้าง meta-annotation จากที่มีอยู่ได้

นี่คือข้อมูลพื้นฐานบางประการของคำอธิบายประกอบใน Java:

  1. คำอธิบายประกอบขึ้นต้นด้วย '@' เสมอ ตัวอย่างเช่น: '@override', '@target', '@SuppressWarnings' เป็นต้น
  2. คำอธิบายประกอบไม่ส่งผลต่อการทำงานของโปรแกรมที่คอมไพล์
  3. คำอธิบายประกอบช่วยในการเชื่อมโยงข้อมูลเมตากับองค์ประกอบของโปรแกรม เช่น เมธอด คลาส ตัวแปร ฯลฯ
  4. คำอธิบายประกอบไม่ได้เป็นเพียงความคิดเห็น เนื่องจากอาจส่งผลต่อการประมวลผลโปรแกรมโดยคอมไพเลอร์ พวกเขาให้ข้อมูลคอมไพเลอร์เพิ่มเติมเกี่ยวกับโปรแกรม แต่ไม่ได้เป็นส่วนหนึ่งของโปรแกรมเอง ดังนั้น คำอธิบายประกอบเหล่านี้จึงไม่ส่งผลต่อการทำงานของโปรแกรมที่คอมไพล์

สารบัญ

ประเภทของคำอธิบายประกอบใน Java

1. คำอธิบายประกอบค่าเดียว

หมายเหตุประกอบแบบค่าเดียวอนุญาตให้ใช้แบบฟอร์มชวเลขได้เพียงรูปแบบเดียว เนื่องจากประกอบด้วยสมาชิกเพียงคนเดียว สมาชิกจะต้องได้รับค่าหลังการใช้คำอธิบายประกอบ อย่างไรก็ตาม ไม่จำเป็นต้องระบุชื่อของคำอธิบายประกอบ สมาชิกจะต้องมีค่าถ้าจะใช้ชวเลข ตัวอย่างเช่น:

@TestAnnotation("กำลังทดสอบ");

2. คำอธิบายประกอบแบบเต็ม

คำอธิบายประกอบแบบเต็มประกอบด้วยข้อมูลต่างๆ เช่น สมาชิกข้อมูล ค่า คู่ และชื่อ

ตัวอย่างเช่น:

@TestAnnotation(owner=”Rahul”, value=”Class Geeks”)

เรียนรู้ หลักสูตรการพัฒนาซอฟต์แวร์ ออนไลน์จากมหาวิทยาลัยชั้นนำของโลก รับโปรแกรม Executive PG โปรแกรมประกาศนียบัตรขั้นสูง หรือโปรแกรมปริญญาโท เพื่อติดตามอาชีพของคุณอย่างรวดเร็ว

3. คำอธิบายประกอบซ้ำ

เมื่อคำอธิบายประกอบสามารถนำมาใช้กับวัตถุเอกพจน์ได้มากกว่าหนึ่งครั้ง จะมีป้ายกำกับว่าเป็นคำอธิบายประกอบซ้ำ คำอธิบายประกอบที่ทำซ้ำจะถูกระบุด้วยแท็ก @Repeatable ตามที่กำหนดไว้ในแพ็คเกจ java.lang.annotation ช่องค่าระบุประเภทคอนเทนเนอร์ของคำอธิบายประกอบซ้ำ

คอนเทนเนอร์ถูกกำหนดให้เป็นคำอธิบายประกอบพร้อมช่องค่าที่มีอาร์เรย์ของคำอธิบายประกอบที่เกิดซ้ำ ในการสร้างคำอธิบายประกอบซ้ำ ก่อนอื่นให้สร้างคำอธิบายประกอบคอนเทนเนอร์ จากนั้นระบุประเภทคำอธิบายประกอบเป็นอินพุตสำหรับคำอธิบายประกอบ @Repeatable

ตัวอย่างเช่น:

// โปรแกรม Java เพื่อแสดงคำอธิบายประกอบที่ทำซ้ำได้

// กำลังนำเข้าคลาสที่จำเป็น

นำเข้า java.lang.annotation.Annotation;

นำเข้า java.lang.annotation.Repeatable;

นำเข้า java.lang.annotation.Retention;

นำเข้า java.lang.annotation.RetentionPolicy;

นำเข้า java.lang.reflect.Method;

// ทำให้คำอธิบายประกอบคำทำซ้ำได้

@การเก็บรักษา(RetentionPolicy.RUNTIME)

@ทำซ้ำได้ (MyRepeatedAnnos.class)

@คำอินเทอร์เฟซ

{

คำสตริง () ค่าเริ่มต้น "สวัสดี";

ค่า int() ค่าเริ่มต้น 0;

}

// สร้างคำอธิบายประกอบคอนเทนเนอร์

@การเก็บรักษา(RetentionPolicy.RUNTIME)

น.ส.น.ส

{

คำ [] ค่า ();

}

คลาสสาธารณะหลัก {

// ทำซ้ำคำในวิธีการใหม่

@Words (คำ = "ก่อน" ค่า = 1)

@Words (คำ = "วินาที" ค่า = 2)

โมฆะคงที่สาธารณะ newMethod()

{

หลัก obj = ใหม่ หลัก ();

ลอง {

คลาส<?> c = obj.getClass();

// รับคำอธิบายประกอบสำหรับ newMethod

วิธี m = c.getMethod(“newMethod”);

// แสดงคำอธิบายประกอบซ้ำ

หมายเหตุหมายเหตุ

= m.getAnnotation(MyRepeatedAnnos.class);

System.out.println(อันโน);

}

จับ (NoSuchMethodException จ) {

System.out.println(จ);

}

}

โมฆะคงที่สาธารณะหลัก (สตริง [] args) { newMethod (); }

}

ผลลัพธ์สุดท้ายจะเป็น: @MyRepeatedAnnos(value={@Words(value=1, word=”First”), @Words(value=2, word=”Second”)})

สำรวจหลักสูตรวิศวกรรมซอฟต์แวร์ยอดนิยมของเรา

เอสแอล. ไม่ โปรแกรมพัฒนาซอฟต์แวร์
1 วิทยาศาสตรมหาบัณฑิตสาขาวิทยาการคอมพิวเตอร์จาก LJMU & IIITB โปรแกรมใบรับรองความปลอดภัยทางไซเบอร์ของ Caltech CTME
2 Bootcamp การพัฒนาเต็มกอง โปรแกรม PG ใน Blockchain
3 Executive Post Graduate Program in Software Development - Specialization in DevOps ดูหลักสูตรวิศวกรรมซอฟต์แวร์ทั้งหมด

3. คำอธิบายประกอบเครื่องหมาย

คำอธิบายประกอบเกี่ยวกับเครื่องหมายมีขึ้นเพื่อจุดประสงค์ในการประกาศเท่านั้น คำอธิบายประกอบนี้ไม่มีสมาชิกใด ๆ และไม่มีข้อมูลใด ๆ อยู่ภายใน จุดประสงค์เดียวคือเพื่อรักษาสถานะเป็นคำอธิบายประกอบ ตัวอย่างเช่น: @Override

4. พิมพ์คำอธิบายประกอบ

คำอธิบายประกอบเหล่านี้สามารถใช้ได้ทุกที่ที่มีการใช้ประเภท ตัวอย่างเช่น เราสามารถใส่คำอธิบายประกอบประเภทการส่งคืนของเมธอด ประเภทคำอธิบายประกอบถูกแท็กด้วยคำอธิบายประกอบ @Target

รหัสที่สามารถแสดงคำอธิบายประกอบประเภทคือ:

// กำลังนำเข้าคลาสที่จำเป็น

นำเข้า java.lang.annotation.ElementType;

นำเข้า java.lang.annotation.Target;

// การใช้คำอธิบายประกอบเป้าหมายเพื่อใส่คำอธิบายประกอบประเภท

@Target(ElementType.TYPE_USE)

// ประกาศคำอธิบายประกอบแบบง่าย

@ประเภทอินเทอร์เฟซAnnoDemo{}

// คลาสหลัก

GFG ระดับสาธารณะ {

// วิธีการขับหลัก

โมฆะคงที่สาธารณะหลัก (สตริง [] args) {

// การใส่คำอธิบายประกอบประเภทของสตริง

@TypeAnnoDemo String string = “รหัสนี้มีคำอธิบายประกอบพร้อมคำอธิบายประกอบประเภท”;

System.out.println(สตริง);

abc();

}

// การใส่คำอธิบายประกอบประเภทการส่งคืนของฟังก์ชัน

คงที่ @TypeAnnoDemo int abc () {

System.out.println("ประเภทการส่งคืนของฟังก์ชันนี้มีคำอธิบายประกอบ");

กลับ 0;

}

ตัวอย่างของคำอธิบายประกอบที่กำหนดไว้ล่วงหน้า

มีคำอธิบายประกอบที่กำหนดไว้ล่วงหน้าหลายประเภทที่เราได้กล่าวถึงก่อนหน้านี้ ให้เราดู:

1. @Override

คำอธิบายประกอบเครื่องหมายนี้สามารถใช้ได้กับเมธอดเท่านั้น เมธอดใดๆ ที่มีคำอธิบายประกอบ @override จะต้องแทนที่เมธอดอื่นจากซูเปอร์คลาส หากไม่สำเร็จ จะเกิดข้อผิดพลาดในการคอมไพล์ สิ่งนี้เกิดขึ้นเนื่องจากต้องแน่ใจว่าซูเปอร์คลาสถูกแทนที่จริง ๆ และไม่ใช่แค่โอเวอร์โหลดเท่านั้น

รหัสที่สามารถแสดงคำอธิบายประกอบการแทนที่คือ:

// ชั้น 1

คลาสเบส

{

โมฆะสาธารณะ Display()

{

System.out.println(“ฐานแสดง()”);

}

โมฆะคงที่สาธารณะหลัก (สตริง args[])

{

ฐาน t1 = ใหม่ที่ได้รับ ();

t1.Display();

}

}

// ชั้น 2

// ขยายเหนือคลาส

คลาส Derived ขยาย Base

{

@แทนที่

โมฆะสาธารณะ Display()

{

System.out.println(“การแสดงผลที่ได้รับ ()”);

}

}

2. @เป้าหมาย

มีไว้เพื่อใช้เป็นคำอธิบายประกอบสำหรับคำอธิบายประกอบอื่นเท่านั้น @Target ยอมรับหนึ่งพารามิเตอร์ ซึ่งต้องเป็นค่าคงที่ ElementType พารามิเตอร์จะกำหนดว่าสามารถใช้กับการประกาศใด คำอธิบายประกอบ @Target สามารถมีค่าได้หลายค่าแทนที่จะเป็นเพียงค่าเดียว อย่างไรก็ตาม หากต้องประกาศค่าหลายค่า ค่านั้นจะต้องอยู่ในรูปของวงเล็บปีกกา เช่น @Target({ElementType.FIELD, ElementType.LOCAL_VARIABLE})

คำอธิบายประกอบ @Retention สามารถใช้ที่นี่เพื่อกำหนดสถานะการเก็บรักษาของคำอธิบายประกอบ ปัจจัยสามประการที่ส่งผลต่อคำอธิบายประกอบ @Retention:

  • ที่มา: คอมไพเลอร์ไม่สนใจคำอธิบายประกอบ เนื่องจากมักจะเก็บไว้ที่ระดับต้นทาง
  • รันไทม์: มันถูกเก็บไว้ที่รันไทม์
  • คลาส: คำอธิบายประกอบยังคงเป็นเวลาคอมไพล์และถูกละเว้นโดยโปรแกรม Java

3. @สืบทอด

คำอธิบายประกอบนี้สามารถใช้เพื่อวัตถุประสงค์ในการประกาศเท่านั้น และด้วยเหตุนี้จึงมีผลกับการประกาศคลาสบางประเภทเท่านั้น คำอธิบายประกอบหนึ่งสามารถแทนที่อีกคำอธิบายหนึ่งและสืบทอดคุณสมบัติของมัน ดังนั้น สามารถตรวจสอบซูเปอร์คลาสได้หากไม่มีหมายเหตุประกอบเฉพาะจากคลาสย่อย อย่างไรก็ตาม หากมีคำอธิบายประกอบอยู่ ก็จะได้รับคำอธิบายประกอบ @Inherited

ตัวอย่างเช่น:

// ชั้น 1

คลาส DeprecatedTest

{

@เลิกใช้

โมฆะสาธารณะ Display()

{

System.out.println("ดิสเพลย์ที่เลิกใช้การทดสอบ ()");

}

}

// ชั้น 2

คลาส SuppressWarningTest

{

// ถ้าเราแสดงความคิดเห็นด้านล่างคำอธิบายประกอบ โปรแกรมสร้าง

// คำเตือน

@SuppressWarnings({“checked”, “deprecation”})

โมฆะคงที่สาธารณะหลัก (สตริง args[])

{

DeprecatedTest d1 = ใหม่ DeprecatedTest ();

d1.Display();

}

}

บทสรุป

ที่นี่ เราได้เรียนรู้เกี่ยวกับคำอธิบายประกอบใน Java นอกจากนี้เรายังได้เรียนรู้เกี่ยวกับประเภทของคำอธิบายประกอบใน Java และการใช้งาน ซึ่งสามารถช่วยให้นักพัฒนา Java สร้างโปรแกรมที่มีประสิทธิภาพและสามารถปรับขนาดได้อย่างง่ายดาย

หากคุณต้องการเรียนรู้เพิ่มเติมเกี่ยวกับแนวคิด Java การรับรอง PG ที่เชื่อมโยงกับงานของ upGrad ในด้านวิศวกรรมซอฟต์แวร์ เป็นทางออกที่ดีที่สุดของคุณในการทำความเข้าใจเกี่ยวกับภาษาการเขียนโปรแกรมอย่าง Java, HTML, JS ตลอดจนเครื่องมือและไลบรารีสำหรับการพัฒนาซอฟต์แวร์อื่นๆ

โปรแกรมนี้ออกแบบมาสำหรับนักศึกษาปีสุดท้ายหรือผู้สำเร็จการศึกษาที่ว่างงานที่ต้องการรักษาตำแหน่งระดับเริ่มต้นในสาขา หลักสูตร 5 เดือนครอบคลุมความเชี่ยวชาญใน MERN/Cloud-Native และช่วยให้นักเรียนสร้างแฟ้มผลงานระดับแนวหน้าด้วยการเปิดเผยโครงการภาคปฏิบัติ 5 โครงการ

ดังนั้นอย่ารอช้า ตรงไปที่ upGrad และจองที่นั่งของคุณวันนี้!

คำอธิบายประกอบ @jsonproperty คืออะไร

คำอธิบายประกอบ Jsonproperty ช่วยให้นักพัฒนาสามารถจับคู่คีย์ JSON กับชื่อคุณสมบัติในระหว่างการทำให้เป็นอนุกรมและดีซีเรียลไลซ์เซชัน ตามการตั้งค่าเริ่มต้นของ Java คีย์จะถูกจับคู่กับฟิลด์ POJO ในระหว่างการทำให้เป็นอนุกรม คำอธิบายประกอบ Json ช่วยแทนที่ฟังก์ชันการทำงานเริ่มต้นนี้โดยใช้แอตทริบิวต์สตริงที่ระบุชื่อที่แมป

คำอธิบายประกอบไฮเบอร์เนตคืออะไร

คำอธิบายประกอบไฮเบอร์เนตเป็นอีกเทคนิคหนึ่งในการระบุข้อมูลเมตาเมื่อทำการแมปวัตถุและตารางเชิงสัมพันธ์ เป็นวิธีการทำแผนที่ที่มีประสิทธิภาพและค่อนข้างใหม่ ซึ่งสามารถใช้แทนข้อมูลเมตาการแมป XML ได้ การใช้คำอธิบายประกอบแบบไฮเบอร์เนต ผู้ใช้สามารถจัดเก็บข้อมูลเมตาในไฟล์จาวา POJO ไฟล์เดียวที่มีโค้ดด้วย ซึ่งช่วยให้เข้าใจโครงสร้างตารางได้ดียิ่งขึ้น

@SuppressWarning คืออะไร

คำอธิบายประกอบ @SuppressWarnings จะแจ้งคอมไพเลอร์ของคำเตือนที่ถูกระงับ การแจ้งเตือนจะแสดงในรูปแบบสตริงตามชื่อ มันสามารถมอบให้กับการประกาศประเภทใดก็ได้ Java แบ่งการเตือนออกเป็นสองคลาส คือ unchecked และ deprecated เมื่อโค้ดที่เก่ากว่าโต้ตอบกับโค้ดที่ใช้ชื่อสามัญ คำเตือนที่ไม่ได้ตรวจสอบจะถูกสร้างขึ้น