本来有段代码大概是这样的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() 如何通过反射调 。谢谢

解决方案 »

  1.   

    Object obj=c.newInstance(); 
    Method m = c.getMethod("geti",new Class[]{});
    m.invoke(obj,new Object []{});  
      

  2.   

    疑点二中传参数的A.class 怎么传
      

  3.   

     你可以去看看我以前写的一篇文章,希望对你有所帮助,呵呵!
    http://blog.csdn.net/lazy_p/archive/2009/12/22/5054528.aspx
      

  4.   

    调用私有方法的话还有一步!!Google吧
      

  5.   

    Method.invoke(Object obj, Object... args) 
     
      

  6.   


    Object obj=A.class.newInstance(); //new 一个A实例,要求无参构造函数存在
    Method m = A.class.getMethod("geti",new Class[]{}); //得到要执行的方法
    m.invoke(obj,new Object []{});//执行方法
    没错就是这样的
      

  7.   

    直接调用BeanUtil就是了,要是想自己写的话,参照:
    http://loven-11.javaeye.com/admin/blogs/649283
      

  8.   

    错了,是这个link   http://loven-11.javaeye.com/blog/649283