Java Reflection API: สิ่งที่คุณต้องรู้



บทความนี้จะแนะนำคุณเกี่ยวกับ Java Reflection API และยังช่วยวิธีการทำงานของ Reflection ใน Java และสิ่งที่เกี่ยวข้องกับการสาธิต

การสะท้อนกลับ คือ กระบวนการตรวจสอบหรือแก้ไขพฤติกรรมรันไทม์ของคลาสในรันไทม์ . Java Reflection API ใช้เพื่อจัดการคลาสและสมาชิกซึ่งรวมถึงฟิลด์เมธอดคอนสตรัคเตอร์ ฯลฯ ที่รันไทม์ ในบทความนี้เราจะเข้าใจรายละเอียดเกี่ยวกับ 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

มีคำถามสำหรับเรา? โปรดระบุไว้ในส่วนความคิดเห็นของบทความนี้และเราจะติดต่อกลับโดยเร็วที่สุด