ภาพรวมของความคิดเห็น Java:
1. คำอธิบายประกอบมีไว้สำหรับคอมไพเลอร์ที่จะเห็นซึ่งแตกต่างจากคำอธิบายประกอบ
2. สามคำอธิบายประกอบพื้นฐาน:
@Override บอกคอมไพเลอร์ว่านี่เป็นการเอาชนะวิธีการ
@deprecated บอกคอมไพเลอร์ว่าวิธีการที่ล้าสมัย
@suppresswarnings ("ไม่ได้ตรวจสอบ") อย่าเตือน
= (value = {"ไม่ได้ตรวจสอบ"})
3. คำอธิบายประกอบสามารถใช้แทนไฟล์การกำหนดค่าแบบดั้งเดิมได้
4. เริ่มต้นจาก JDK5, Java ได้เพิ่มการสนับสนุนสำหรับข้อมูลเมตา (ข้อมูลเมตา) คือคำอธิบายประกอบ
คำอธิบายประกอบที่กำหนดเองและคำอธิบายประกอบการสะท้อนกลับ
คำอธิบายประกอบที่กำหนดเอง:
1. สร้างคำอธิบายประกอบใหม่: (มีสัญลักษณ์ @ มากกว่าหนึ่งเดียวมากกว่าคำจำกัดความอินเตอร์เฟส)
การคัดลอกรหัสมีดังนี้:
สาธารณะ @interface myannotation {
//คุณสมบัติ
สตริงใคร ();
อายุ int ();
เพศสตริง ();
-
2. ตั้งค่าคำอธิบายประกอบด้วยค่าเริ่มต้น
การคัดลอกรหัสมีดังนี้:
สาธารณะ @interface youannotation {
สตริงที่ () ค่าเริ่มต้น "ทอม";
อายุ int () ค่าเริ่มต้น 0;
String String () ค่าเริ่มต้น "หญิง";
-
3. สถานการณ์อาร์เรย์
การคัดลอกรหัสมีดังนี้:
public @interface unannotation {
สตริง [] ค่า ();
-
metaannotation / metaannotation
ใช้ในการแก้ไขคำอธิบายประกอบ (คุณสามารถดูซอร์สโค้ดของ @Override)
@นโยบายคำอธิบายประกอบที่ใช้เพื่อระบุโดเมนที่คำอธิบายประกอบสามารถรักษาได้
RetentionPolicy.class
มีระดับไบต์ แต่ไม่สามารถมองเห็นได้ในระดับการรัน (ค่าเริ่มต้น)
RetentionPolicy.runtime
ทั้งสามระดับสามารถมองเห็นได้และสามารถสะท้อนได้ในระหว่างการรันไทม์
RetentionPolicy.Source มีเฉพาะที่ระดับซอร์สโค้ดเท่านั้นและไม่สามารถมองเห็นได้ในระดับไบต์
@Target ระบุขอบเขตของคำอธิบายประกอบที่ใช้
@Documented เขียนลงในเอกสาร
@Inherited การสืบทอดการสืบทอดคลาสย่อยที่สืบทอดคลาสนี้ยังคงมีลักษณะของคลาสแม่เป็นคำอธิบายประกอบ
เช่นคำอธิบายประกอบการสะท้อนกลับเพื่อดำเนินการเชื่อมต่อกับการดำเนินการฐานข้อมูล:
คำอธิบายประกอบคำจำกัดความมีดังนี้:
การคัดลอกรหัสมีดังนี้:
// ให้คำอธิบายประกอบสะท้อนเมื่อรันไทม์
@Retention (RetentionPolicy.runtime)
สาธารณะ @interface dbinfo {
สตริงไดรเวอร์ () ค่าเริ่มต้น "com.mysql.jdbc.driver";
string url () ค่าเริ่มต้น "url = jdbc: mysql: // localhost: 3306/วิชาการ";
สตริงรหัสผ่าน () ค่าเริ่มต้น "1234";
ชื่อผู้ใช้สตริง () ค่าเริ่มต้น "รูท";
-
การฉีดยาสะท้อน:
การคัดลอกรหัสมีดังนี้:
@dbinfo
การเชื่อมต่อแบบคงที่สาธารณะ getConnection () โยนข้อยกเว้น {
// รับ bytecode ของคลาสนี้
Class clazz = demo2.class;
// รับวิธีการสาธารณะชื่อ getConnection () ในชั้นนี้
// พารามิเตอร์ 1: ชื่อวิธี
// พารามิเตอร์ 2: วัตถุไบต์ที่สอดคล้องกับพารามิเตอร์ประเภทเมธอด
วิธีการ = clazz.getMethod ("getConnection", null);
// ด้วยวิธีนี้รับคำอธิบายประกอบที่กำหนดไว้ในวิธีการ
dbinfo dbinfo = method.getannotation (dbinfo.class);
String driver = dbinfo.driver ();
string url = dbinfo.url ();
String user = dbinfo.username ();
สตริงรหัสผ่าน = dbinfo.password ();
class.forname (ไดรเวอร์);
Return DriverManager.getConnection (URL, ผู้ใช้, รหัสผ่าน);
-