欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

java中利用反射调用另一类的private方法的简单实例

程序员文章站 2024-03-12 08:17:20
我们知道,java应用程序不能访问持久化类的private方法,但hibernate没有这个限制,它能够访问各种级别的方法,如private, default, prote...

我们知道,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方法的简单实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。