我們知道,Java應用程序不能訪問持久化類的private方法,但Hibernate沒有這個限制,它能夠訪問各種級別的方法,如private, default, protected, public. Hibernate是如何實現該功能的呢?答案是利用JAVA的反射機制,如下:
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方法的簡單實例就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持武林網。
新聞熱點
疑難解答