การสะท้อนกลับ คือ กระบวนการตรวจสอบหรือแก้ไขพฤติกรรมรันไทม์ของคลาสในรันไทม์ . Java Reflection API ใช้เพื่อจัดการคลาสและสมาชิกซึ่งรวมถึงฟิลด์เมธอดคอนสตรัคเตอร์ ฯลฯ ที่รันไทม์ ในบทความนี้เราจะเข้าใจรายละเอียดเกี่ยวกับ Java Reflection API
บทความนี้จะเน้นไปที่คำแนะนำต่อไปนี้:
- Java Reflection API ใช้ที่ไหน
- คลาสในแพ็คเกจ java.lang.reflect
- วิธีการที่ใช้ใน java.lang.Class
- วิธีการรับวัตถุของคลาส Class?
- ข้อดีและข้อเสียของการใช้ Java Reflection API
ดังนั้นให้เราเริ่มต้นด้วยคำแนะนำเหล่านี้ในบทความนี้เกี่ยวกับ Java Reflection API
Java Reflection API ใช้ที่ไหน
Reflection API ส่วนใหญ่จะใช้ใน:
- IDE (Integrated Development Environment) เช่น Eclipse, MyEclipse, NetBeans เป็นต้น
- ดีบักเกอร์
- เครื่องมือทดสอบ ฯลฯ
แล้ว Class ใน Java lang reflect package คืออะไร?
คลาสใน java.lang.reflect Package?
ต่อไปนี้เป็นรายการคลาส Java ต่างๆใน java.lang.package เพื่อใช้งานการสะท้อน -
วิธีรับความยาวของอาร์เรย์ในจาวาสคริปต์
- ฟิลด์ : คลาสนี้ใช้เพื่อรวบรวมข้อมูลที่เปิดเผยเช่นประเภทข้อมูลตัวปรับการเข้าถึงชื่อและค่าของตัวแปร
- วิธี : คลาสนี้ใช้เพื่อรวบรวมข้อมูลที่เปิดเผยเช่นตัวแก้ไขการเข้าถึงประเภทการส่งคืนชื่อประเภทพารามิเตอร์และประเภทข้อยกเว้นของวิธีการ
- ผู้สร้าง : คลาสนี้ใช้เพื่อรวบรวมข้อมูลที่เปิดเผยเช่นตัวแก้ไขการเข้าถึงชื่อและประเภทพารามิเตอร์ของตัวสร้าง
- แก้ไข : คลาสนี้ใช้เพื่อรวบรวมข้อมูลเกี่ยวกับตัวปรับการเข้าถึงเฉพาะ
ไม่ให้เรามาดูวิธี Java Reflection API
วิธีการที่ใช้ใน java.lang.Class
วิธี | คำอธิบาย |
สาธารณะ String getName () | ส่งคืนชื่อคลาส |
สาธารณะคงคลาส forName (String className) พ่น ClassNotFoundException | โหลดคลาสและส่งกลับการอ้างอิงของคลาสคลาส |
วัตถุสาธารณะ newInstance () พ่น InstantiationException, IllegalAccessException | สร้างอินสแตนซ์ใหม่ |
บูลีนสาธารณะ isInterface () | ตรวจสอบว่าเป็นอินเทอร์เฟซหรือไม่ |
บูลีนสาธารณะ isArray () วิธีการแปลงทศนิยมเป็นไบนารีใน python | ตรวจสอบว่าเป็นอาร์เรย์หรือไม่ |
บูลีนสาธารณะ isPrimitive () | ตรวจสอบว่าเป็นแบบดั้งเดิมหรือไม่ |
คลาสสาธารณะ getSuperclass () | ส่งคืนการอ้างอิงคลาส superclass |
ฟิลด์สาธารณะ [] getDeclaredFields () พ่น SecurityException | ส่งคืนจำนวนฟิลด์ทั้งหมดของคลาสนี้ |
วิธีสาธารณะ [] getDeclaredMethods () พ่น SecurityException | ส่งคืนจำนวนเมธอดทั้งหมดของคลาสนี้ |
Public Constructor [] getDeclaredConstructors () พ่น SecurityException | ส่งคืนจำนวนตัวสร้างทั้งหมดของคลาสนี้ |
วิธีสาธารณะ getDeclaredMethod (ชื่อสตริงคลาส [] parameterTypes) พ่น NoSuchMethodException, SecurityException | ส่งคืนอินสแตนซ์คลาสเมธอด |
ให้เราก้าวไปข้างหน้าด้วยบทความ
วิธีการรับวัตถุของคลาส Class?
มี 3 วิธีในการรับอินสแตนซ์ของคลาสคลาส มีดังต่อไปนี้:
- forName () วิธีการของคลาส Class
- getClass () วิธีการของคลาส Object
- ไวยากรณ์. class
forName () วิธีการของคลาส Class
- ใช้เพื่อโหลดคลาสแบบไดนามิก
- ส่งคืนอินสแตนซ์ของคลาสคลาส
- ควรใช้หากคุณทราบชื่อคลาสแบบเต็มไม่สามารถใช้กับประเภทดั้งเดิมได้
มาดูตัวอย่างง่ายๆของเมธอด forName ()
class Simple {} class Test {public static void main (String args []) {Class c = Class.forName ('Simple') System.out.println (c.getName ())}}
เอาท์พุต:
เรียบง่าย
Java Reflection: API getClass () เมธอดของคลาส Object
ส่งคืนอินสแตนซ์ของคลาสคลาส ควรใช้ถ้าคุณรู้ประเภท ยิ่งไปกว่านั้นยังสามารถใช้กับไพรมารี
class Simple {} class Test {void printName (Object obj) {Class c = obj.getClass () System.out.println (c.getName ())} public static void main (String args []) {Simple s = new แบบง่าย () ทดสอบ t = การทดสอบใหม่ () t.printName (s)}}
เอาท์พุต:
เรียบง่าย
คือมีความสัมพันธ์
ไวยากรณ์. class
หากประเภทพร้อมใช้งาน แต่ไม่มีอินสแตนซ์ก็เป็นไปได้ที่จะได้รับคลาสโดยการต่อท้าย“ .class” เข้ากับชื่อของประเภทสามารถใช้สำหรับประเภทข้อมูลดั้งเดิมได้เช่นกัน
การทดสอบคลาส {public static void main (String args []) {Class c = boolean.class System.out.println (c.getName ()) คลาส c2 = Test.class System.out.println (c2.getName ()) }}
เอาท์พุต:
บูลีน
ทดสอบ
ตอนนี้ให้เราดำเนินการต่อกับบทความ Java Reflection API นี้
ข้อดีและข้อเสียของการใช้ Java Reflection API
ข้อดีของการใช้ Java Reflection API
- คุณสมบัติการขยาย: แอ็พพลิเคชันอาจใช้ประโยชน์จากคลาสภายนอกที่ผู้ใช้กำหนดโดยการสร้างอินสแตนซ์ของอ็อบเจ็กต์ความสามารถในการขยายได้โดยใช้ชื่อที่มีคุณสมบัติครบถ้วน
- เครื่องมือดีบั๊กและทดสอบ : Debuggers ใช้คุณสมบัติของการสะท้อนเพื่อตรวจสอบสมาชิกส่วนตัวในชั้นเรียน
ข้อเสียของการใช้ Java Reflection API
- ค่าใช้จ่ายด้านประสิทธิภาพ: การดำเนินการสะท้อนแสงมีประสิทธิภาพช้ากว่าคู่ที่ไม่สะท้อนแสงและควรหลีกเลี่ยงในส่วนของรหัสที่เรียกบ่อยในแอปพลิเคชันที่ไวต่อประสิทธิภาพ
- การเปิดรับภายใน: รหัสสะท้อนแสงจะทำลายสิ่งที่เป็นนามธรรมและอาจเปลี่ยนพฤติกรรมด้วยการอัปเกรดแพลตฟอร์ม
ดังนั้นเราจึงมาถึงตอนท้ายของบทความนี้ใน 'Java Reflection API' หากคุณต้องการเรียนรู้เพิ่มเติมตรวจสอบไฟล์ โดย Edureka บริษัท การเรียนรู้ออนไลน์ที่เชื่อถือได้ หลักสูตรการฝึกอบรมและการรับรอง Java J2EE และ SOA ของ Edureka ได้รับการออกแบบมาเพื่อฝึกอบรมคุณสำหรับแนวคิด Java ทั้งหลักและขั้นสูงพร้อมกับกรอบงาน Java ต่างๆเช่น Hibernate & Spring
มีคำถามสำหรับเรา? โปรดระบุไว้ในส่วนความคิดเห็นของบทความนี้และเราจะติดต่อกลับโดยเร็วที่สุด