java.lang.ClassCastException: java.lang.Class cannot be cast to java.lang.reflect.ParameterizedType
今天在做一个s2sh小项目时,遇到了上述异常,
public class BasicDaoImpl<T> extends HibernateDaoSupport implements CommonDao<T> {
private Class clazz;
public BasicDaoImpl(){
ParameterizedType type = (ParameterizedType) this.getClass().getGenericSuperclass();
//获取泛型类型参数
clazz = (Class) type.getActualTypeArguments()[0];
}
}
异常出现在了上述类的构造方法中,由于使用的是spring容器来产生该类,spring在反射创建该类时并没有获得泛型参数,出现该异常。
暂时解决方法:对于特定的bean继承BasicDao类,将继承后的类使用spring容器来产生,就可以避免该错误。
public class AdminDaoImpl extends BasicDaoImpl<Admin> {
@Override
public Admin getById(String id) {
Admin admin = getHibernateTemplate().get(Admin.class, id);
return admin;
}
}