主题 : 求大神给我教一下
级别: 秀才
UID: 59660
积分:83 加为好友
威望: 0 精华: 0
主题:5 回复:47
注册时间:2014-03-25
在线时长:0
1#   发表于:2015-03-29 15:26:33  IP:202.25.*.*
最近在学习Hibernate,自己写了一个hibernate泛型DAO,可是在DAO接口实现类中获取不到*类类型,我把代码精简了一下,麻烦大神帮我看看BaseDaoImpl中为何获取不到*类类型User.一编译就会产生java.lang.Class cannot be cast to java.lang.reflect.ParameterizedType的报错,求大神指教
package com.hib;


import java.io.Serializable;
import java.lang.reflect.ParameterizedType;
import java.lang.reflect.Type;  

public class Test3 {       
public static void main(String[] args){   
BaseDao<String> dao =new BaseDaoImpl<String>();

}  
interface BaseDao<T extends Serializable> {
}
class BaseDaoImpl<T extends Serializable> extends HibernateBaseDao implements BaseDao<T>{
public Class<?> entityClass;
public BaseDaoImpl() {
Type genType = getClass().getGenericSuperclass();
Type[] params = ((ParameterizedType) genType).getActualTypeArguments();
this.entityClass=(Class<T>)params[0];
System.out.println(this.entityClass);
}

}
abstract class HibernateBaseDao {
public HibernateBaseDao() {
}
}
级别: 秀才
UID: 59660
积分:83 加为好友
威望: 0 精华: 0
主题:5 回复:47
注册时间:2014-03-25
在线时长:0
2#   发表于:2015-03-29 15:28:52  IP:202.25.*.*
package com.hib;


import java.io.Serializable;
import java.lang.reflect.ParameterizedType;
import java.lang.reflect.Type;  

public class Test3 {       
public static void main(String[] args){   
BaseDao<User> dao =new BaseDaoImpl<User>();

}  
interface BaseDao<T extends Serializable> {
}
class BaseDaoImpl<T extends Serializable> extends HibernateBaseDao implements BaseDao<T>{
public Class<?> entityClass;
public BaseDaoImpl() {
Type genType = getClass().getGenericSuperclass();
Type[] params = ((ParameterizedType) genType).getActualTypeArguments();
this.entityClass=(Class<T>)params[0];
System.out.println(this.entityClass);
}

}
abstract class HibernateBaseDao {
public HibernateBaseDao() {
}
}
这样看会不会不太乱
1 共1页