本文总结:java泛型是无法获取到T.class。

1 问题引入

在定义泛型类时,想要获取到泛型类的类型变量对应的class,这样就可以根据class通过newInstance来创建对象。所以现在问题就是如何在下面代码中初始化tClass:

我们第一反映应该是在构造函数中使用,但是会发钱编译器报错。

总结,在对于java泛型是无法拿到T.class。

2 一个例子

只有定义一个子类(SonPrintClass)来继承具体的模板类(FatcherClass<String,Integer>)时,此时才能在SonPrintClass获取到T和V具体的class

1. 将模板类定义为父类

在上面代码中最重要的就是

解释如下

(1)getGenericSuperclass()

用来获取带有泛型的父类。这个函数返回的结果的类型是Type

(2)ParameterizedType

用来获取java泛型参数类型。如通过ParameterizedType#getActualypeArguments()[i]来获取。

2. 如何使用,通过一个子类来继承具体的FatherClass

3. 测试

执行结果为:

class java.lang.String

class java.lang.Integer

(全文完)

 

分类&标签

发表评论

电子邮件地址不会被公开。 必填项已用*标注