java.lang.Class cannot be cast to java.lang.reflect.ParameterizedType解决办法
java.lang.Class cannot be cast to java.lang.reflect.ParameterizedType解决办法
日期:2014-05-19 浏览次数:20915 次
java.lang.Class cannot be cast to java.lang.reflect.ParameterizedType 在网上找了一个hibernate通用dao泛型接口代码: public interface GenericDao<T> { void create(T entity);
public void delete(T entity) { super.getSession().delete(entity); }..... 结果启动tomcat服务器的时候报java.lang.Class cannot be cast to java.lang.reflect.ParameterizedType错误,什么问题?求解决。。。。。
------解决方案-------------------- 不用这样实现泛型,
你把泛型写在方法上就好了 如
Java code
/**
*
*/
package com.zuxiang.annotationtest;
import java.io.Serializable;
import java.util.List;
/**
* @author zuxiang
*
*/
public class Dao {
public <T> void delete(Serializable entityId){
}
public <T> void update(T entity){
}
public <T> void save(T entity){
}
public <T> T find(Serializable entityId){
return t;
}
}
------解决方案--------------------
------解决方案-------------------- 泛型不能这么用 你不能在运行时才去获取泛型的类型 也就是说,必须在编译器就明确这个泛型对象 public class GenericHibernateDaoImpl<T> extends HibernateDaoSupport implements GenericDao<T> 按照这个类的定义来说,我觉得给类加上abstract比较好,不会让人产生歧义 getActualTypeArguments需要用这个函数的话,你的类就应该已经被指定了泛型类型 例如 public class MyDaoImpl<MyPOJO>
------解决方案--------------------
------解决方案-------------------- public interface GenericDao{ void create(Class<T> entity);