`

(转)求泛型参数类型

    博客分类:
  • JSE
 
阅读更多
“java中没法得到泛型参数化类型,因为在编译期没法确定泛型参数化类型,也就找不到对应的类字节码文件,自然就不行了。

Type genType = clazz.getGenericSuperclass();

Type [] params = ((ParameterizedType) genType)

.getActualTypeArguments();

return (Class) params[0];

泛型反射的关键是获取ParameterizedType,再调用它的getActualTypeArguments()方法获得实际绑定的类型。但注意public class BookManager<Book>是不能被反射的,因为擦拭法的缘故。只有在Superclass 或者成员变量(Field.getGenericType())等有函数返回ParameterizedType的时候才能成功反射。”
分享到:
评论

相关推荐

    C#泛型参数多线程与复杂参数多线程2

    最近用多线程用的比较多自己走了一些弯路,分享出来希望大家少走弯路,C#中的多线程有两个重载,一个是不带参数的,一个是带参数的,但是即便是带参数的多线程也不支持泛型,这使得使用泛型参数多线程的时候很不方便...

    泛型类型转换Demo

    在Java编程语言中,泛型是一种强大的特性,它允许我们在编写代码时定义类型参数,从而增强代码的灵活性、安全性和可读性。泛型在集合框架中尤其常见,如List、Set和Map等接口,它们可以接受特定类型的元素,防止在...

    C#泛型参数多线程与复杂参数多线程

    最近用多线程用的比较多自己走了一些弯路,分享出来希望大家少走弯路,C#中的多线程有两个重载,一个是不带参数的,一个是带参数的,但是即便是带参数的多线程也不支持泛型,这使得使用泛型参数多线程的时候很不方便...

    C# 泛型参数转换

    相反,`in`修饰符用于参数类型,表示泛型参数可以被逆变(contravariant),即父类型可以被赋值给子类型的参数。例如,`FuncIn&lt;in ParamType&gt;`,这里的`ParamType`可以是`object`,那么接受`object`类型的委托`Func...

    C#2.0 泛型和强制类型转换C#2.0 泛型和强制类型转换

    通过使用泛型,可以创建参数化的类型,这意味着在类、接口或方法中可以使用类型参数来指定具体的类型。这有助于避免重复代码,并提供了更好的性能。 在给定的代码片段中,主要展示了如何定义一个泛型类以及如何在类...

    泛型工具类

    具体到给定的`GenericUtil`类,其核心功能在于提取出泛型参数的具体类型,这对于动态类型处理、反射操作以及类型检查等场景非常有用。 #### 描述详解:“泛型工具类,用于dao的超类,获取实体类的类型。” 在描述...

    Java泛型类型擦除后的补偿

    在Java编程语言中,泛型是一种强大的特性,它允许我们在定义类、接口和方法时引入类型参数,从而实现参数化类型。然而,Java的泛型并非像C++或C#那样在运行时存在,而是在编译期间经历一个称为“类型擦除”的过程。...

    JAVA利用泛型返回类型不同的对象方法

    在这里,`String`和`Integer`是泛型参数的具体类型,它们代表`get`方法将返回的对象类型。`get`方法的实现如下: ```java public class Test { private String a = "abc"; private int b = 123; public Return...

    详解C# 泛型中的数据类型判定与转换

    然而,在泛型中,我们不能直接将泛型参数强转为任何一种非 object 数据类型。这时,我们可以使用 object 类型作为桥梁,进行具体的类型判定与转换。 类型判定 在类型判定中,我们可以使用 is 关键字来判定类型,也...

    详谈Java8新特性泛型的类型推导

    这意味着,如果方法参数或局部变量的类型信息足以确定泛型类型,编译器就能进行更精确的类型推导。 此外,Java 8还引入了其他与泛型相关的改进,比如接口默认方法(Default Methods)和函数式接口(Functional ...

    JAVA-泛型课件-泛型课件

    泛型的类型参数可以用在类、接口和方法的创建中,分别称为泛型类、泛型接口和泛型方法。 ### 泛型类 泛型类是指在定义类的时候引入类型参数。例如,标准库中的`ArrayList`就是一个泛型类,可以声明为`ArrayList&lt;T&gt;...

    TypeScript泛型类 - 把类作为参数类型的泛型类.zip

    在这个“TypeScript泛型类 - 把类作为参数类型的泛型类”示例中,我们将深入探讨如何利用泛型在TypeScript中创建灵活的、可复用的类模板。 泛型是TypeScript中的一个核心概念,它允许我们在编写代码时定义和重用...

    个人学习C#泛型总结ppt

    遵循约定,泛型参数通常使用单个字母表示,如T、U、V等,但也可以使用有意义的名称,如Key、Value等,以更好地表达泛型的作用。 **泛型与类型安全示例** 考虑ArrayList和List的对比。ArrayList可以存储任何类型的...

    JVM如何理解Java泛型类.doc

    1. **显式指定类型**:当创建泛型对象时,最好明确指定类型参数`T`的具体类型,以便编译器能够进行类型检查。例如: ```java Pair&lt;String&gt; pair = new Pair("a", "b"); ``` 2. **编译器与运行时的区别**:虽然...

    泛型java的泛型知识,非常有用

    泛型允许我们在类、接口和方法中使用类型参数,这样在编译时期就能检查类型匹配,减少运行时类型转换异常。 1. **泛型的基本概念** - 泛型的本质是在类、接口或方法中使用类型参数,让它们能够处理多种数据类型。...

    泛型需要注意的问题.pdf

    但是,可以在泛型类中定义泛型静态方法,这种情况下方法内部使用的泛型参数是独立于类实例的泛型参数的。 泛型相关面试题: Java中的泛型是参数化类型的一种机制,它允许在编译时就进行类型检查,提高代码的复用性...

    java泛型学习

    在编译过程中,类型参数被替换为它们的边界类型(通常是Object),因此不同泛型参数的实例(如List和List)在运行时共享相同的类表示。这就是为什么`list1.getClass() == list2.getClass()`会返回true的原因。类型...

Global site tag (gtag.js) - Google Analytics