คำอธิบายประกอบใน Java: ประเภท การใช้และตัวอย่าง
เผยแพร่แล้ว: 2022-05-19คำอธิบายประกอบในภาษาการเขียนโปรแกรม เช่น Java หมายถึงเมตาดาต้าของวากยสัมพันธ์ที่สามารถรวมเข้ากับซอร์สโค้ดของ Java ได้ ปัจจัยต่างๆ เช่น แพ็คเกจ Java ตัวแปร คลาส พารามิเตอร์ และเมธอดสามารถใส่คำอธิบายประกอบได้ นักพัฒนาสามารถอ่านหมายเหตุประกอบ Java ได้โดยตรงจากไฟล์ต้นฉบับ เช่นเดียวกับแท็ก Javadoc
นอกจากนี้ยังสามารถรวมหมายเหตุประกอบ Java และอ่านจากไฟล์คลาส Java เอาต์พุตของคอมไพเลอร์ Java ซึ่งช่วยให้เครื่องเสมือน Java สามารถรักษาคำอธิบายประกอบและอ่านผ่านการสะท้อนในขณะใช้งาน ใน Java สามารถสร้าง meta-annotation จากที่มีอยู่ได้
นี่คือข้อมูลพื้นฐานบางประการของคำอธิบายประกอบใน Java:
- คำอธิบายประกอบขึ้นต้นด้วย '@' เสมอ ตัวอย่างเช่น: '@override', '@target', '@SuppressWarnings' เป็นต้น
- คำอธิบายประกอบไม่ส่งผลต่อการทำงานของโปรแกรมที่คอมไพล์
- คำอธิบายประกอบช่วยในการเชื่อมโยงข้อมูลเมตากับองค์ประกอบของโปรแกรม เช่น เมธอด คลาส ตัวแปร ฯลฯ
- คำอธิบายประกอบไม่ได้เป็นเพียงความคิดเห็น เนื่องจากอาจส่งผลต่อการประมวลผลโปรแกรมโดยคอมไพเลอร์ พวกเขาให้ข้อมูลคอมไพเลอร์เพิ่มเติมเกี่ยวกับโปรแกรม แต่ไม่ได้เป็นส่วนหนึ่งของโปรแกรมเอง ดังนั้น คำอธิบายประกอบเหล่านี้จึงไม่ส่งผลต่อการทำงานของโปรแกรมที่คอมไพล์
ประเภทของคำอธิบายประกอบใน 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 เมื่อโค้ดที่เก่ากว่าโต้ตอบกับโค้ดที่ใช้ชื่อสามัญ คำเตือนที่ไม่ได้ตรวจสอบจะถูกสร้างขึ้น