เรารู้ว่าแอปพลิเคชัน Java ไม่สามารถเข้าถึงวิธีการส่วนตัวของชั้นเรียนถาวรได้ แต่ Hibernate ไม่มีข้อ จำกัด นี้ สามารถเข้าถึงวิธีการต่าง ๆ ในระดับต่าง ๆ เช่นส่วนตัวค่าเริ่มต้นการป้องกันสาธารณะ ไฮเบอร์เนตใช้ฟังก์ชั่นนี้อย่างไร คำตอบคือการใช้กลไกการสะท้อนของ Java ดังนี้:
นำเข้า java.lang.reflect.invocationTargetException; นำเข้า java.lang.reflect.method คลาสสาธารณะ reflectDemo {public Static Void Main (String [] args) โยนข้อยกเว้น {วิธีการ = packageClazz.class.getDeclaredMethod ( method.setAccessible (จริง); method.invoke (ใหม่ packageClazz (), "452345234", "q31234132");}} คลาส packageclazz {โมฆะส่วนตัว PrivilegedMethod (สตริง invokerName, adb) {system.out.println ("---"ผลลัพธ์ผลลัพธ์คือ: --- 452345234 --- Q31234132
เราเห็นว่าการใช้กลไกการสะท้อนของ Java แม้แต่วิธีการส่วนตัวก็สามารถเรียกและใช้งานได้ อย่างไรก็ตามฉันมีคำถาม - แม้ว่าวิธีการส่วนตัวสามารถเรียกได้ว่าอะไรคือจุดของการห่อหุ้ม?
ตัวอย่างง่าย ๆ ข้างต้นของการใช้การสะท้อนเพื่อเรียกวิธีการส่วนตัวประเภทอื่นใน Java เป็นเนื้อหาทั้งหมดที่ฉันแบ่งปันกับคุณ ฉันหวังว่าคุณจะให้ข้อมูลอ้างอิงและฉันหวังว่าคุณจะสนับสนุน wulin.com มากขึ้น