Exception:java.lang.ClassCastException: java.lang.Class cannot be cast to java.lang.reflect.ParameterizedType

最近开始着手做一个项目,项目环境用的是spring4.2,struts2.3.1,hibernate4.3.0....一切都配置正常,所有的POJO类都布置好。service层和dao层也抽取了,可是在测试的时候,竟然报以一个错误 ,java.lang.ClassCastException: java.lang.Class cannot be cast to java.lang.reflect.ParameterizedType,,,调试了好久,都没有找出方法,后来看了woshisap大神的博客再把问题解决,故贴上大神的代码 :

Class<T> entityClass = (Class<T>)((ParameterizedType)getClass().getGenericSuperclass()).getActualTypeArguments()[0];

出现:

java.lang.ClassCastException: java.lang.Class cannot be cast to java.lang.reflect.ParameterizedType

使用以下工具类方法获取

1 package cn.pconline.prolib.util;
 2 import java.lang.reflect.ParameterizedType;
 3 import java.lang.reflect.Type;
 4
 5 public class GenericsUtils {
 6     /**
 7      * 通过反射,获得定义Class时声明的父类的范型参数的类型.
 8      * 如public BookManager extends GenricManager<Book>
 9      *
10      * @param clazz The class to introspect
11      * @return the first generic declaration, or <code>Object.class</code> if cannot be determined
12      */
13     public static Class getSuperClassGenricType(Class clazz) {
14         return getSuperClassGenricType(clazz, 0);
15     }
16
17     /**
18      * 通过反射,获得定义Class时声明的父类的范型参数的类型.
19      * 如public BookManager extends GenricManager<Book>
20      *
21      * @param clazz clazz The class to introspect
22      * @param index the Index of the generic ddeclaration,start from 0.
23      */
24     public static Class getSuperClassGenricType(Class clazz, int index) throws IndexOutOfBoundsException {
25
26         Type genType = clazz.getGenericSuperclass();
27
28         if (!(genType instanceof ParameterizedType)) {
29             return Object.class;
30         }
31
32         Type[] params = ((ParameterizedType) genType).getActualTypeArguments();
33
34         if (index >= params.length || index < 0) {
35             return Object.class;
36         }
37         if (!(params[index] instanceof Class)) {
38             return Object.class;
39         }
40         return (Class) params[index];
41     }
42 }  

最后在需要调用的地方键入以下代码:

Class<T> entityClass = GenericsUtils.getSuperClassGenricType(BasicService.class, 0);

时间: 2024-11-09 05:12:02

Exception:java.lang.ClassCastException: java.lang.Class cannot be cast to java.lang.reflect.ParameterizedType的相关文章

java.lang.ClassCastException: android.app.Application cannot be cast to

出这个异常的原因是在项目中添加了新lication类(public class Application extends lication)之后,没有在AndroidManifest.xml中添加该类的声明,所以编译器抛出异常: java.lang.ClassCastException: android.app.Application cannot be cast to 类名  <application android:icon="@drawable/icon" android:l

安卓出现错误: java.lang.ClassCastException: android.widget.TextView cannot be cast to android.widget.EditText

Caused by: Java.lang.ClassCastException: Android.widget.TextView cannot be cast to android.widget.EditText 该种报错信息,检查代码确定无误后,若还是出现这种错误,则可通过以下这个办法进行解决: 点中该项目-->点击Project-->clean   清理下再重新运行该项目,然后就解决了

java.lang.ClassCastException:android.widget.Button cannot be cast to android.widget.ImageView

今天遇到一个错误也不知道怎么回事,上网搜了一下: 出现的问题是:java.lang.ClassCastException:android.widget.Button cannot be cast to android.widget.ImageView 解决的方法是: Clean 你的项目.(点击eclipse上面的project然后clean然后选择你要clean的项目) 修改一个xml文件,然后保存(稍微动一下,保存) 删除 R 文件. (build project 之后会自动生成).

关于android使用ksoap2报Caused by: java.lang.ClassCastException: org.ksoap2.SoapFault cannot be cast to org.ksoap2.serialization.SoapObject

Caused by: java.lang.ClassCastException: org.ksoap2.SoapFault cannot be cast to org.ksoap2.serialization.SoapObject 报这种类似的错误的,困扰了我挺久.偶尔报不是一直报. 原来是少了一个判断,因为服务器每次返回的不一定是我们想要的结果. 见图 困惑了好久,最后在 stackoverflow 里面才找到答案. 大概就是服务器异常的时候会导致这个,难怪我程序会崩溃有些时候,比如某个地方本

Android: java.lang.ClassCastException: android.widget.imageView cannot be cast to android.widget.textView异常解决

有时在修改xml文件时,全报这种错误,这个应该是缓存没得到及时更新导致的,可以通过以下方法解决: Eclipse tends to mess up your resources every now and then. This leads to some odd behavior such as strings and images being swapped all over your app, and more commonly classCastException(s), which ha

java.lang.ClassCastException: android.os.BinderProxy cannot be cast to com.test.Test

由于我在第二个Activity中指定了进程名字,但是服务却没有指定进程名(默认跟主入口一个进程)所以报错. 网上找到的是 服务 和绑定服务的客户端必须在同一个application或者进程中,所以Manifest中也要指定服务的进程名且和调用服务的Activity的中客户端在同一进程中. <service android:name=".TestService" android:process="myprocess.remote"/><activit

java.lang.ClassCastException: android.widget.RelativeLayout cannot be cast to android.widget.TextView

最近在学习drawerLayout时,遇到这个bug.如下示: 原因: 可能是没有在适配器参数内加入TextView的id. 解决方案: 将原来的适配器参数代码 mDrawerList.setAdapter(new ArrayAdapter<String>(this,R.layout.list_item,datas)); 修改为以下形式即可: mDrawerList.setAdapter(new ArrayAdapter<String>(this,R.layout.list_ite

Hibernate HQL查询异常:java.lang.ClassCastException解决

有时候,我们查询只需要查询bean的某一个部分,而不需要它所有的属性,这时候HQL就可以这样写: 假设有一个类User(省略getter setter): public class User { private String name; private int age; private boolean sex; } 如果只需要查询姓名和年龄,则HQL可以这样写:select new User(name,age) from User; 此时实体类中需要有一个new User(name,age) 这

2类型转换异常:Exception in thread &quot;main&quot; java.lang.ClassCastException:java.lang.Object cannot be cast to java.lang.Integer

public class TestException {    public static void main(String[] args) {        Object obj = new Integer(1);        int i =(Integer)(obj);        System.out.println(i);                Object object = new Object();        if (object instanceof Integer

Exception in thread &quot;main&quot; java.lang.ClassCastException

启动springboot时,报这个错Exception in thread "main" java.lang.ClassCastException 原因:热部署搞的, <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-devtools</artifactId> </dependency> 所谓热部署,就是