本来有段代码大概是这样的A a = new A();a = hibernateDao.get(A.class,id); int i = a.geti()[/c简单的说就是 用hibernate get一个 A 的对象出来,然后再通过A的方法取得一个属性值。现在我想重构这块代码。 通过反射来达到。 比如A com.aa.model.A 那么我现在有个“com.aa.model.A” 的字符串,应该如何实现上面的代码呢。有三个疑点: 一:如何通过字符串得到对象 [code=Java]Class c = Class.forName("com.aa.model.A")
这样貌似是对的
二: get方法中的参数A.class 应该如何写
三: a.geti() 如何通过反射调 。谢谢
这样貌似是对的
二: get方法中的参数A.class 应该如何写
三: a.geti() 如何通过反射调 。谢谢
Method m = c.getMethod("geti",new Class[]{});
m.invoke(obj,new Object []{});
http://blog.csdn.net/lazy_p/archive/2009/12/22/5054528.aspx
Object obj=A.class.newInstance(); //new 一个A实例,要求无参构造函数存在
Method m = A.class.getMethod("geti",new Class[]{}); //得到要执行的方法
m.invoke(obj,new Object []{});//执行方法
没错就是这样的
http://loven-11.javaeye.com/admin/blogs/649283