我們知道,Java應用程序不能訪問持久化類的private方法,但Hibernate沒有這個限制,它能夠訪問各種級別的方法,如private, default, protected, public. Hibernate是如何實現該功能的呢?答案是利用JAVA的反射機制,如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; public class ReflectDemo { public static void main(String[] args) throws Exception { Method method = PackageClazz. class .getDeclaredMethod( "privilegedMethod" , new Class[]{String. class ,String. class }); method.setAccessible( true ); method.invoke( new PackageClazz(), "452345234" , "q31234132" ); } } class PackageClazz { private void privilegedMethod(String invokerName,String adb) { System.out.println( "---" +invokerName+ "----" +adb); } } |
輸出結果為:---452345234----q31234132
我們看到,利用java的反射機制,即使是private方法,也可以被調用使用.不過我到產生一個疑問--即然private方法都可以被調用,那么封裝又有何意義?
以上這篇java中利用反射調用另一類的private方法的簡單實例就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持服務器之家。