当前位置:  开发笔记 > 编程语言 > 正文

如何获取参数化的Class实例

如何解决《如何获取参数化的Class实例》经验,为你挑选了1个好方法。

由于引入了泛型,因此Class被参数化,因此List.class生成Class .这很清楚.

我无法弄清楚的是如何获得一个自身参数化的类型的实例,即Class >.就像在这个片段中:

public class GenTest {
    static  T instantiate(Class clazz) throws Exception {
        return clazz.newInstance();
    }
    public static void main(String[] args) throws Exception {
        // Is there a way to avoid waring on the line below
        // without using  @SuppressWarnings("unchecked")?
        // ArrayList.class is Class, but I would like to
        // pass in Class>
        ArrayList l = GenTest.instantiate(ArrayList.class);
    }
}

我经常遇到这个问题的变化,我仍然不知道,如果我只是错过了什么,或者是否真的没有更好的方法.谢谢你的建议.



1> Avi..:

Class类是类型的运行时表示.由于参数化类型在运行时经历类型擦除,因此Class的类对象与Class >和Class >相同.

您无法使用.class表示法实例化它们的原因是,这是用于类文字的特殊语法.当语言参数化时,Java语言规范明确禁止使用此语法,这就是不允许使用List .class的原因.

推荐阅读
可爱的天使keven_464
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有