当前位置: 代码迷 >> J2EE >> 应用反射时的一个小有关问题
  详细解决方案

应用反射时的一个小有关问题

热度:162   发布时间:2016-04-22 03:15:54.0
应用反射时的一个小问题
今天刚刚接触了一小点反射。有个小问题。请教大家。
Java code
daoClass = Class.forName(daoClassName);//这里是用反射获取一个类名,和它的一个方法Class methodParameterTypes[] = new Class[1];methodParameterTypes[0] = Integer.TYPE;Method targetMethodInfo = daoClass.getMethod("findById", methodParameterTypes);

如上所述,用反射调用的是一个hibernate自动生成的DAO类的一个方法:
Java code
    public TblPotential findById(java.lang.Integer id) {        log.debug("getting TblPotential instance with id: " + id);        try {            TblPotential instance = (TblPotential) getSession().get(                    "com.minicrm.hibernate.tables.TblPotential", id);            return instance;        } catch (RuntimeException re) {            log.error("get failed", re);            throw re;        }    }


结果测试时说找不到这个方法。后来我发觉DAO类中findById()的参数是一个Interger,而通过反射调用的方法findById()的参数是int,所以导致无法找到。
后来我在DAO类中又加了一个方法:
Java code
    public TblPotential findById(int id){        return findById(id);    }

测试通过。

问题是:我现在不想改动DAO类,请问在反射那里的语句通过怎样可以找到findById(java.lang.Integer id)方法?

------解决方案--------------------
你为啥要用Integer.TYPE呢 ? 用这个当然是int的Class对象了
直接用Integer.class不就好了么...
  相关解决方案