关于得到泛型的class 异常问题
2012-07-20 11:45
253 查看
开始项目环境的搭建,在开始搭建之初,我考虑(s2sh) 底层和数据库交互是直接用hibernateTemplate 这个工具类呢 还是在重新开始封装一次 这样代码的扩展性就会很强,项目耦合明显降低,所有有必要写一个通用的baseDao,baseDao代码中
private Class<T> poClass;
@SuppressWarnings("unchecked")
public BasicDAOImpl() {
Type type = this.getClass().getGenericSuperclass();
if (type instanceof ParameterizedType) {
poClass = (Class<T>) ((ParameterizedType) type).getActualTypeArguments()[0];
} else {
throw new RuntimeException(this.getClass().getName() + "没有指定PO的类型");
}
}
写了一个测试类,class Child extends BasicDAOImpl<Test>{
public Child()
{
System.out.println(poClass);
}
public static void main(String[] args){
Child c = new Child();
}
}
测试正常
不过在测试的时候 出现过好几次
java.lang.ClassCastException: java.lang.Class cannot be cast to java.lang.reflect.ParameterizedType
at Test.<init>(Test.java:9)
at Test.main(Test.java:14)
java.lang.ClassCastException: sun.reflect.generics.reflectiveObjects.TypeVariableImpl cannot be cast to java.lang.Class
at Test.<init>(Test.java:14)
at Test.main(Test.java:20)
这两个异常困扰了我 好长时间,终于搞定
private Class<T> poClass;
@SuppressWarnings("unchecked")
public BasicDAOImpl() {
Type type = this.getClass().getGenericSuperclass();
if (type instanceof ParameterizedType) {
poClass = (Class<T>) ((ParameterizedType) type).getActualTypeArguments()[0];
} else {
throw new RuntimeException(this.getClass().getName() + "没有指定PO的类型");
}
}
写了一个测试类,class Child extends BasicDAOImpl<Test>{
public Child()
{
System.out.println(poClass);
}
public static void main(String[] args){
Child c = new Child();
}
}
测试正常
不过在测试的时候 出现过好几次
java.lang.ClassCastException: java.lang.Class cannot be cast to java.lang.reflect.ParameterizedType
at Test.<init>(Test.java:9)
at Test.main(Test.java:14)
java.lang.ClassCastException: sun.reflect.generics.reflectiveObjects.TypeVariableImpl cannot be cast to java.lang.Class
at Test.<init>(Test.java:14)
at Test.main(Test.java:20)
这两个异常困扰了我 好长时间,终于搞定
相关文章推荐
- Eclipse中编译和运行时使用的JDK和JRE级别问题(关于"Bad version number in .class file"的异常解决)
- 关于使用反射机制得到泛型的字段名的问题
- “关于使用反射机制得到泛型的字段名的问题”的解答
- 关于使用反射机制得到泛型的字段名的问题
- 关于ClassNOtFoundException异常
- 关于运行期异常:Failed to instantiate [java.util.List]: Specified class is an interface
- 关于 Cannot create JDBC driver of class '' for connect URL 'null' 的异常
- 关于一些异常内存溢出的问题分析
- 关于Java和Android中ClassLoader路径的问题
- 关于Class.getResource和ClassLoader.getResource的路径问题
- iBaits中,关于insert返回值的问题(注意!!!不必写resultClass= "java.lang.Integer",方法的返回值就是int)
- 关于windows的safari浏览器的parseInt()函数处理08和09异常问题
- 关于操作Access数据报System.Data.OleDb.OleDbException: INSERT INTO 语句的语法错误异常问题
- [模拟器问题] 关于ActivityManager: Error: Activity class {..} does not exist. 的解决
- 关于启动Tomcat出现异常:java.lang.ClassCastException: org.springframework.web.filter.CharacterEncodingFilter
- 关于泛型 Class中的 Static 成员.
- 关于java实现的mapreduce程序打包后通过脚本运行出现classnotfound异常
- 关于mybatis查询出错,异常情况下返回值的问题
- 关于异常中return的问题
- 关于Java泛型的若干问题