การสะท้อนกลับ
การสะท้อน: แมปคุณสมบัติและวิธีการของคลาสลงในคลาสที่สอดคล้องกัน
การใช้การสะท้อนขั้นพื้นฐาน
มีสามวิธีในการเรียนชั้นเรียน:
เพียงแค่เขียนตาม API กระบวนการทั่วไปคือ:
ใช้ประเภทพารามิเตอร์ของวิธีการเพื่อระบุวิธีการโดยไม่ซ้ำกันตาม: วิธีการโอเวอร์โหลดเมธอด
ภาพสะท้อนของอาร์เรย์
ตัวอย่างต่อไปนี้ส่วนใหญ่แสดงหลายจุด:
คลาสสาธารณะสะท้อนให้เห็นถึง {โมฆะสาธารณะคงที่หลัก (สตริง [] args) {int [] a1 = int ใหม่ [] {1,2,3}; int [] a2 = ใหม่ int [5]; int [] [] a3 = ใหม่ int [2] [3]; System.out.println (a1.getClass () == a2.getClass ()); // true system.out.println (a1.getClass ()); // class [i system.out.println (a3.getClass ()); a3.getClass (). getSuperclass ()); // true system.out.println (a2.getClass (). getSuperclass ()); // คลาส java.lang.Object // ประโยคถัดไปไม่ได้รวบรวม: ข้อผิดพลาด: (15, 42) Java: Java.lang.lang.lang.lang.lang.lang ขยาย int []> และ java.lang.class <Capture#2, ทั้งหมด? ขยาย int [] []> //system.out.println (a1.getClass () == a3.getClass ()); วัตถุ [] b3 = a3; // รวบรวมโดย // ประโยคถัดไปไม่ผ่านข้อผิดพลาด: (17, 24) Java: ประเภทที่เข้ากันไม่ได้: int [] ไม่สามารถแปลงเป็น java.lang.Object [] // object [] b1 = a1; สตริง S1 = "ABC"; System.out.println (array.aslist (a1)); // [[i@1540e19d] System.out.println (array.aslist (S1)); // [abc]}}}}เอาท์พุท:
trueclass [iClass [[itrueclass java.lang.Object [[i@1540e19d] [ABC]
อินพุต: HashCode และปัญหาการรั่วไหลของหน่วยความจำอ้างถึง Java API:
หากตัวแปรสมาชิกที่เข้าร่วมในการเปลี่ยนแปลงการคำนวณ HasCode ในช่วงกลางการลบที่ตามมาจะล้มเหลวส่งผลให้เกิดการรั่วไหลของหน่วยความจำ
การโหลดไฟล์กำหนดค่า
คลาสโหลดเดอร์โหลดชื่อคลาสไฟล์แบบอ่านแบบอ่านอย่างเดียว class.getClassLoader (). getResourceasstream (STR);
ชื่อคลาส class.getResourceasstream (STR) คือการเรียกตัวโหลดคลาสเป็นหลัก สกัดกั้นซอร์สโค้ด (คลาส Java ภายใต้แพ็คเกจ java.lang):
Public InputStream getResourceasSstream (ชื่อสตริง) {name = redentame (ชื่อ); classloader cl = getclassloader0 (); if (cl == null) {// คลาสระบบ return classloader.getSystemResourceAsStream (ชื่อ); } return cl.getResourceasstream (ชื่อ);}เกี่ยวกับเส้นทาง Str วิธีการเขียนนั้นค่อนข้างเฉพาะเจาะจง
ในอดีตเมื่อรวบรวมรหัส Java จะต้องเพิ่ม CONF/ โฟลเดอร์บางส่วนในการพึ่งพาหรือทำเครื่องหมายเป็นโฟลเดอร์ต้นทาง เห็นได้ชัดว่าพวกเขาเป็นไฟล์ XML แต่ไม่มีซอร์สโค้ด Java จากที่นี่ตอนนี้ฉันรู้แล้วว่าเป็นเพราะการใช้การสะท้อนกลับเพื่อโหลดไฟล์การกำหนดค่า
สารวัตรและ Javabean
กระบวนการของ Javabean อ่านค่าของแอตทริบิวต์ X: การใช้อักษรตัวพิมพ์ใหญ่คำนำหน้าและวิธีการรับ
"x"-> "x"-> "getx"-> "methodgetx"
ฉันไม่ได้ใช้มันเพื่อใช้งานด้วยตัวเองด้วยการวิปัสสนาในขณะนี้ดังนั้นฉันจะไม่วางรหัสอีกต่อไป
การใช้งานอย่างง่าย: ใช้ Java.Beans.PropertyDescriptor คลาส
การใช้งานปัญหา: ใช้คลาส java.beans.introspector เพื่อสำรวจค่าการส่งคืนของวิธี getBeanInfo
Javabean ต้องมีตัวสร้างที่ไม่มีพารามิเตอร์
ใช้ชุดเครื่องมือ Beanutils