java反射获取泛型类型 转换错误的问题

在用反射获取泛型类型中 遇到转换类型错误,错误提示是
java.lang.class cannot be cast to java.lang.reflect.ParameterizedType.
求大神解答 跪谢。。。。

我的 代码是

public class fanxingTestDaoImpl {

/**
 * 这个用来获取泛型获取实体类的名字
 */
private  Class classt;

public  fanxingTestDaoImpl(){


    ParameterizedType type = (ParameterizedType)this.getClass().getGenericSuperclass();
    //得到t的实现类型
    this.classt = (Class)type.getActualTypeArguments()[0];

    System.out.println("泛型得到的方法是"+classt.getSimpleName());

}   

}

1个回答

你这个没写错,只是没写全,你只是告诉了它需要反射,但是在使用的时候你需要告诉他反射那个类,也就是代码没写全,针对你这个问题刚写了个例子:
http://blog.csdn.net/xionglangs/article/details/53575858

youseenoonehere
it_noone 谢谢 谢谢 终于搞懂了
大约 3 年之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
java 通过反射获取调用者的泛型的实际类型
public class Person<T> {    }    import java.lang.reflect.ParameterizedType;  import java.lang.reflect.Type;    public class Student extends Person<Student> {  public static void main(Stri...
java 反射机制 (获取父类泛型的类型)getGenericSuperclass
1.首先, T.getClass() 或 T.class都是非法的,因为T是泛型变量;      由于一个类的类型在编译期已确定,故不能在运行期得到T的实际类型; 2.获取方式是: Class entityClass = (Class ) ((ParameterizedType) getClass().getGenericSuperclass()).getActualTypeArgumen
java反射机制获取泛型参数类型
package com.dasenlin.reflectionconstractor;import java.lang.reflect.Method; import java.lang.reflect.ParameterizedType; import java.lang.reflect.Type; import java.util.List; import java.util.Map;/** *
反射获取List中的泛型
获取List中的泛型类型,创建对象,并且字段设置值 for (Field f : partPropType.getDeclaredFields()) { if ("accountPrincipalApproveList".equals(f.getName())) { f.setAccessible(true);
(继承方式)反射获取泛型类的类型和对象
1.工具类,用于获取泛型类的类型和对象public abstract class FatherReflectUtils<T> { public T getTInstance() throws InstantiationException, IllegalAccessException { Type sType = getClass().getGenericSup...
通过反射获取泛型的实际类型
package cn.itcast.generic; import java.io.Serializable; import java.lang.reflect.ParameterizedType; import org.hibernate.Session; import cn.itcast.domain.Category; //T extends Serializable & Cloneab
反射获取泛型真实类型
public class Animal { } import java.lang.reflect.ParameterizedType; import java.lang.reflect.Type; public class Cat extends Animal { public static void main(String[] args) { Cat st=new Cat(); Class
java通过反射获取List中的泛型
Field[] fields = bean.getClass().getDeclaredFields(); for(Field f : fields){ f.setAccessible(true); if(f.getType() == java.util.List.class){ // 如果是List类型,得到其Generic的类型 Type
java反射获取List泛型
package com;import java.lang.reflect.Field;import java.lang.reflect.ParameterizedType;import java.lang.reflect.Type;import java.util.Calendar;import java.util.Date;import java.util.List;import java.ut...
通过反射获取泛型参数数组(Class对象 List类型)
/** * 获取某一个字段上面的泛型参数数组,典型的就是获取List对象里面是啥参数 *  * @param f * @return */ public static Class[] getParameterizedType(Field f) { // 获取f字段的通用类型 Type fc = f.getGenericType(); // 关键的地方得到其Generic
java 反射机制 (获取父类泛型的类型)getGenericSuperclass
1.首先, T.getClass() 或 T.class都是非法的,因为T是泛型变量;      由于一个类的类型在编译期已确定,故不能在运行期得到T的实际类型; 2.获取方式是: [java] view plain copy  print? Class  entityClass = (Class ) ((ParameterizedTy
利用反射拿到泛型的类型
public class BaseDaoImpl implements BaseDao { private HibernateTemplate hibernateTemplate; private Class clazz; @SuppressWarnings("unchecked") public BaseDaoImpl(){ // 使用反射技术得到T的真实类型 Parameteriz
通过java反射技术获取泛型的真实类型并对其实例化
public DaoBaseInterfaceImpl() { // 反射得到T的真实类型 ParameterizedType ptype = (ParameterizedType) this.getClass().getGenericSuperclass();// 获取当前new的对象的泛型的父类的类型 this.clazz = (Class) ptype.getActualTyp
Google Guava-基于泛型的使用方式
源码: private static Cache cacheFormCallable = null; public static Cache callableCached() throws Exception { Cache cache = CacheBuilder.newBuilder().maximumSize(10000).expireAfterWrite(10, TimeUnit
使用C#反射中的MakeGenericType函数,来为泛型方法和泛型类指定(泛型的)类型
C#反射中的MakeGenericType函数可以用来指定泛型方法和泛型类的具体类型,方法如下面代码所示这里就不多讲了,详情看下面代码一切就清楚了: using System; using System.Reflection; namespace RFTest { //类ReflectionTest中定义了一个泛型函数DisplayType和泛型类MyGenericClas
Java反射获取泛型类型
Java反射获取泛型类型              在Java反射技术的应用中,取得一个类的成员、方法和构造函数相对比较容易,但是要想取得其中包含的泛型类型则相对困难一些。先看一个简单的例子,然后详细说明每个步骤的作用。 public class Demo { private List list1; private List> listSet; public Set f
Java 通过反射获取一个Field对象的泛型类型
参考处:http://lorry1113.iteye.com/blog/973903 参考之后就要自己封装一个,所以这里小金子封装了对一个字段获取这个字段的泛型的类型        /** * 获取某一个字段上面的泛型参数数组,典型的就是获取List对象里面是啥参数 *  * @param f * @return */ public static Class[] getParame
Java中通过反射获取泛型实例
通过反射获取泛型实例
java 反射机制(通过getGenericSuperclass()方法获取到父类泛型的类型)
1. 在java中T.getClass() 或 T.class都是不合法的,因为T是泛型变量;      由于一个类的类型在编译期已确定,故不能在运行期得到T的实际类型; 2.获取方式是: // 获取当前运行类泛型父类类型,即为参数化类型,有所有类型公用的高级接口Type接收! Type type = this.getClass().getGenericSuperclass(); /
Java使用反射来获取Map的泛型信息
Java通过指定类对应的Class对象,程序可以获得该类里包括的所有Field,不管该Field使用private修饰,还是使用public修饰。获得了Field对象后,就可以很容易的获得该Field的数据类型,例如,下面的代码便是获得该Field对象foeld的类型: Class type = field.getType(); 但是通过这种方式只对普通类型的Field有效,如果该Fi
通过反射获得泛型的实际类型参数
不知道大家有没有尝试过怎样获得一个泛型的实际类型参数?其实这个功能在hibernate中有广泛的应用,那么具体的操作是怎样的呢? 首先,要想直接通过一个变量拿到泛型类型中的实际参数显然是不可能的,参考hibernate源码,只要把这个变量当作一个方法的参数,再通过反射就可以拿到该泛型类型的实际参数。public class GenericsTest { @Test public vo
Java反射通过class获取父类泛型类型
Java反射通过class获取子类泛型类型 在Java的反射技术中,通过Method和Field对象很容易就可以取出泛型类型的具体类型。但是普通类的泛型参数在编译期会被擦除,比如定义了一个List对象,在运行期我们可以拿到的信息就只剩下List,并不知道List中的元素类型是什么。这也说明了,为什么fun(List list)和 fun(List)会被编译器认为是相同的函数。 但是,对于获
得到运行时类的泛型类型。
//得到反射类型 private Class getGenericType(){ if(clazz == null){ Type type = super.getClass().getGenericSuperclass() ; if(type instanceof ParameterizedType){ ParameterizedType ptype = ((Para
传入类名,通过反射,将泛型实例化
package com.example.shopsystem; import java.util.ArrayList; public class HibernateTest {     public void test(String className) {         try {             T t = (T) Class.forName(classNa
Scala 泛型类型擦除
转载:http://blog.csdn.net/wsscy2004/article/details/38440247 https://www.iteblog.com/archives/1520 scala的类与类型 类和类型 List和List类型是不一样的,但是jvm运行时会采用泛型擦除。导致List和List都是Class.为了得到正确的类型,需要通过反射。 泛型
如何反射获得父类的泛型类型
此段代码的出处是Mybatis或者是Ibatis的BaseDao对象, 以对象的全限定名作为sqlMapper的命名空间名称. 解析:1,Class的父类是Type;         2,将Type转换为ParameterizedType;         3,有三个方法: package com.zoo.thread; import java.
java再复习——通过反射获取到方法的参数和返回值的泛型类型
我们都知道了可以定义带有泛型参数的方法,以及泛型返回值的方法了,那么泛型在运行的时候已经被擦除了,我们该如何知道这个泛型到底是什么呢?有很多情况需要知道实际泛型是什么,Android数据库框架以及Http框架在解析成json成实体类的时候,必然要知道是哪个类。 获取参数的泛型API方法: public class GenericParameterizedTypeDemo { public
获取java参数化类中泛型的具体类型
如何获取List<T>中的T.class? 衍生出来的问题就是:如何获取java中参数化类中泛型的具体类型? 关键是ParameterizedType这个接口
java中的泛型类型与Type接口
假设我们定义了一个Room的类,表示一个房间 public class Room(){ }由于我们建造好房间是,不知道房间以后的用途,他可能用来住人,也有可能用来放货物,因此需要用到泛型。但是我们可能想获取Room这个房间里面进来的的东西的类型,这时候就需要了解怎样获取泛型类型。 java中有一个Type接口 根据接口的定义,Type表示的是java里面所有的类型 查看Type的子
Java泛型与反射
在Java中我们都知道泛型是在我们往集合里面添加一个元素的时候会进行合法性检查其实 Java中集合的泛型 是防止编译时 错误输入 只在编译阶段有效 绕过编译就无效了下面我们对此进行验证:在这里我们可以通过反射获取 ArrayList 集合的add方法 通过泛型设置 该集合的元素只能为String 类型 ArrayList list1 = new ArrayList(); public clas
guava反射TypeToken解决泛型运行时类型擦除的问题
guava反射包中的TypeToken类是用来解决java运行时泛型类型被擦除的问题的,有点不好理解,我们通过一个例子来认识什么是泛型的运行时类型擦除。         ArrayListString> stringList = Lists.newArrayList();         ArrayListInteger> intList = Lists.newArrayList();    
如何获取java中泛型参数的实际类型--反射获取
package cn.itcast.oa.base.impl; import java.lang.reflect.ParameterizedType; import java.lang.reflect.Type; import java.util.List; import javax.annotation.Resource; import org.hibernate.Session; imp
Java进阶之reflection(反射机制)——通过反射操作泛型,注解
上篇文章我介绍了Java反射的基本知识,如果没看过的同学可以去看我的上一篇文章 反射概念与基础 ,今天这篇文章主要介绍一下反射地具体应用实例,分别是通过Java反射操作泛型,和反射操作注解(不了解”注解”的同学可以看我的另一篇文章java注解)。一、反射操作泛型(Generic)  Java采用泛型擦除机制来引入泛型。Java中的泛型仅仅是给编译器Javac使用的,确保数据的安全性和免去强制类型转换
Guava中的TypeToken,解决泛型运行时类型擦除的问题
关于对于Type的理解 泛型是一种类型 关于Type,是一个标示接口,该标示接口描述的意义是代表所有的类型 public interface Type { } Type的分类 Class<T> ParameterizedType 泛型 ...... 泛型的结构 public Person<T> { } public interface ParameterizedType extends Type
java如何通过反射取得泛型的实例化对象
package cn.itcast.oa.base; import java.lang.reflect.ParameterizedType; import javax.annotation.Resource; import cn.itcast.oa.service.DepartmentService; import cn.itcast.oa.service.Role
Java Type接口 & 运行时获取泛型类型
一、Type接口 Type是所有类型的父接口,他有4个子接口和一个实现类。
如何通过C#.NET中的反射机制来创建C#.NET泛型类的实例,并调用其方法??
如何通过C#.NET中的反射机制来创建C#.NET泛型类的实例,并调用其方法?
Java中的范型类型强制转化注意
class Person { } class Student extends Person { } public class Test { public static void main(String[] args) { ArrayList list = new ArrayList(); } } 错误提示:Type mismatch: cannot convert fro
利用java反射实现Java Bean 类型转换
在Business layer 和 web layer 需要经常进行Bean的转换.   我写了个比较common的方法, 可以批量转换Bean.     前提:  1.   已知目标Bean的Class.       2.   目标bean 有一个参数是源Bean的构造函数.    /**     *           * @Function  Transfer Sourc
java 获取 泛型类型(接口及超类)
package com.wonders.xss; import com.google.gson.GsonBuilder; import com.wonders.stpt.todoItem.model.vo.TodoInfo; import java.lang.reflect.*; import java.util.HashMap; import java.util.List; import j
玩转java(2)— 泛型type体系与反射
一、Type类型 Type是Java编程语言中所有类型的普通的父接口。这些类型包括原生类型(raw types),参数化类型(parameterized types),数组类型(array types),类型变量(type variables)和 原始类型(primitive types)。我们一般不直接操作Type类型,但了解一下Type类型的层次结构还是有必要的。 1、Type层次
java反射获得泛型参数GETGENERICSUPERCLASS()
public class Person { } import java.lang.reflect.ParameterizedType; import java.lang.reflect.Type; public class Student extends Person { public static void main(String[] args) { Student st=new Stud
Java泛型 通过反射获得方法参数中的变量类名和泛型
通过反射获得方法参数中的变量类名和泛型 package test; import java.lang.reflect.Method; import java.lang.reflect.ParameterizedType; import java.util.ArrayList; public class MainTest { public static void main(String[]
java反射,获取所有属性、方法以及List集合类
java反射,获取所有属性、方法以及List集合类
使用反射获取泛型类型
------- android培训、java培训、期待与您交流! ----------   前面在写绕过反射对泛型直接赋值的blog中有写到:泛型在内存中字节码只有一份,就是编译完成之后就没有类型信息了,已经去类型化了。现在我们想想怎么通过反射来获取泛型的类型呢?由于已经去类型化了,使用普通的反射根本就获取不了。 但是可以通过下面的方法可以获取: import java.lang.re
获取运行时泛型的实际类型
用到的就是下面的这条语句 Class clazz = (Class) ((ParameterizedType) getClass().getGenericSuperclass()).getActualTypeArguments()[0] 下面通过一个例子来解释这是什么意思 先看父类 public class Father { public Father() { // 获取父类的T
简单的java 反射机制实践 map 与object对象的转换
这是我对java反射机制的一点认识,利用反射可以将map集合与object对象进行转化,我想如果可以的话可以进一步改善当做一个框架来编写
反射获取泛型类型
由于项目的实际需要,所以利用java反射原理写了一个简单给bean赋值和取值通用的类,在此记录下方便自己日后用到,也为需要的兄弟提供个参考例子。       当然目前这个版本还有很多需要改进的地方,比如还没有添加对byte、char等的支持,主要是当前项目基本用不到这些类型,所以也没有多加考虑,以后会补上的。  直接附上java代码的:BeanRefUtil.java  Java
获取方法中泛型的具体类型
public class getVectorClass { /* * 获取Vector中的泛型的类型。应用与java框架中 */ public static void main(String[] args) throws SecurityException, NoSuchMethodException{ Class cls = getVectorClass.class; Meth
泛型<T>的类型获取
T.getClass()或者T.class都是非法的,因为T是泛型变量。由于一个类的类型是什么,是在编译期处理的,故不能在运行时直接在Base里得到T的实际类型。 /** *@author zhangwenchao *@version * 可以在service层直接调用,也可以在DAO层扩展调用 */ public class BaseDaoImpl implements BaseDa
相关热词 c# 识别回车 c#生成条形码ean13 c#子控制器调用父控制器 c# 写大文件 c# 浏览pdf c#获取桌面图标的句柄 c# list反射 c# 句柄 进程 c# 倒计时 线程 c# 窗体背景色
立即提问