`

<转载> java泛型T.class的获取

    博客分类:
  • java
 
阅读更多

转载 : java泛型T.class的获取

地址 : http://blog.csdn.net/ykdsg/article/details/5472591

作者 : ykdsg

 

 

Type genType = getClass().getGenericSuperclass();   

Type[] params = ((ParameterizedType) genType).getActualTypeArguments();  
 
Class entityClass =  (Class)params[0];
ykdsg 写道
附:这是泛型擦拭法使得Generic无法获取自己的Generic Type类型。实际上BadClass<String>()实例化以后Class里面就不包括T的信息了,对于Class而言T已经被擦拭为Object,而真正的T参数被转到使用T的方法(或者变量声明或者其它使用T的地方)里面(如果没有那就没有存根),所以无法反射到T的具体类别,也就无法得到T.class。而getGenericSuperclass()是Generic继承的特例,对于这种情况子类会保存父类的Generic参数类型,返回一个ParameterizedType,这时可以获取到父类的T.class了,这也正是子类确定应该继承什么T的方法。

  

 

分享到:
评论

相关推荐

    Java泛型的用法及T.class的获取过程解析

    Java泛型的用法及T.class的获取过程解析 Java泛型是Java编程语言中的一种重要特性,它允许开发者在编写代码时指定类型参数,从而提高代码的灵活性和可读性。本文将详细介绍Java泛型的用法 及T.class的获取过程解析...

    1.java泛型定义.zip

    1.java泛型定义.zip1.java泛型定义.zip1.java泛型定义.zip1.java泛型定义.zip1.java泛型定义.zip1.java泛型定义.zip1.java泛型定义.zip1.java泛型定义.zip1.java泛型定义.zip1.java泛型定义.zip1.java泛型定义.zip1....

    C#重要知识之——泛型列表List例子

    1. 泛型约束:`List&lt;T&gt;`支持泛型约束,如`where T : class`限制`T`为引用类型,`where T : struct`限制为值类型,还可以定义接口约束、基类约束等。 2. 扩容机制:当列表容量不足时,`List&lt;T&gt;`会自动扩容。默认情况...

    2.java定义泛型类.zip

    2.java定义泛型类.zip2.java定义泛型类.zip2.java定义泛型类.zip2.java定义泛型类.zip2.java定义泛型类.zip2.java定义泛型类.zip2.java定义泛型类.zip2.java定义泛型类.zip2.java定义泛型类.zip2.java定义泛型类.zip...

    java泛型深入.pdf

    Class&lt;T&gt; entityClass = (Class&lt;T&gt;) actualTypeArguments[0]; } ``` 在了解Java泛型的时候,需要熟悉它们的定义和使用,也要理解编译时擦除和运行时的表现。正确使用泛型可以提高代码的可读性和安全性,减少因类型...

    Json与实体相互转换,支持IList泛型

    Json转换为实体;Json转换为IList&lt;T&gt;;实体转换为Json;IList&lt;T&gt;转换为Json;

    JAVA泛型笔记.pdf

    public class Dog&lt;T&gt; extends Animal&lt;T&gt; { } ``` 在上面的例子中,子类 `Dog` 继承了父类 `Animal` 的泛型类型参数 `&lt;T&gt;`。 泛型的多类型参数 泛型的多类型参数是指在一个泛型类或接口中指定多个类型参数。例如: ...

    Java1.5泛型指南中文版(Java1.5Gene....pdf

    例如,`class SubBox&lt;T&gt; extends Box&lt;T&gt; { ... }` 定义了一个名为 SubBox 的泛型类,继承自 Box&lt;T&gt;。 4. 通配符 (Wildcards) 通配符是泛型类型参数的占位符,用于表示可变的类型参数。例如,`List&lt;? extends ...

    3.java实例化泛型类.zip

    3.java实例化泛型类.zip3.java实例化泛型类.zip3.java实例化泛型类.zip3.java实例化泛型类.zip3.java实例化泛型类.zip3.java实例化泛型类.zip3.java实例化泛型类.zip3.java实例化泛型类.zip3.java实例化泛型类.zip3....

    C# 解析json格式数据为IList

    本文将深入探讨如何在C#中将JSON格式的数据解析为IList&lt;T&gt;类型。 首先,我们需要了解`IList&lt;T&gt;`接口。它是.NET框架中的一部分,定义了一个有序的、可修改的集合,允许索引访问。T代表你想要存储的元素类型。例如,...

    4.java泛型的限制.zip

    4.java泛型的限制.zip4.java泛型的限制.zip4.java泛型的限制.zip4.java泛型的限制.zip4.java泛型的限制.zip4.java泛型的限制.zip4.java泛型的限制.zip4.java泛型的限制.zip4.java泛型的限制.zip4.java泛型的限制.zip...

    Java 泛型最全指南(定义和使用+继承泛型类/实现泛型接口+泛型的边界+通配符+类型擦除)

    }` 继承了 `Holder` 泛型类,而 `public class ImplA&lt;T&gt; implements A&lt;T&gt; { ... }` 实现了 `A` 泛型接口。 7. 泛型的边界 泛型的边界是指对类型参数的限制。例如,`public class Holder&lt;T extends Number&gt; { ... ...

    泛型讲解 类型通配符

    1. 定义泛型类:`public class Applet&lt;T&gt;{public T info; ...}` 2. 使用泛型类:`Applet&lt;String&gt; applet = new Applet&lt;String&gt;();` 3. 继承泛型类:`public class A extends Applet&lt;String&gt;{...}` 4. 泛型方法:`...

    反射处理java泛型_.docx

    例如,有一个泛型基类`Foo&lt;T&gt;`,其子类`FooChild`传入了一个具体的泛型参数`Bar`,要获取这个参数类型,通常有两种常见做法: a. 在基类中定义一个构造函数,传入泛型类型`T`的`Class`对象,这样子类实例化时可以...

    java泛型详解.pdf

    java泛型详解.pdf

    Java泛型_Java中的泛型结构_

    Java泛型是Java编程语言中一个强大的特性,它允许在定义类、接口和方法时使用类型参数,从而实现参数化类型。泛型的主要目标是提高代码的类型安全性和重用性,减少类型转换的麻烦,并在编译时捕获可能的类型错误。...

    java泛型总结.docx

    在使用varargs(可变参数)或者钻石操作符`&lt;&gt;`时,编译器可以根据上下文自动推断类型参数。例如,`List&lt;String&gt;[] lists = Arrays.asList(new List&lt;String&gt;() {{ add("hello"); add("world"); }});`这里,编译器通过...

    JVM如何理解Java泛型类.doc

    Pair&lt;String&gt; pair1 = new Pair&lt;&gt;("Hello", "World"); ``` 这里,`String`就是类型参数`T`的实际类型。这使得`Pair&lt;String&gt;`成为一个专门用于存储字符串对的类。 #### 三、创建泛型对象的注意事项 在创建泛型对象...

Global site tag (gtag.js) - Google Analytics