我想知道是否可以做这样的事情:

Class clazz = Class.forname("java.lang.String");
GenericClass <clazz> generic = new GenericClass <clazz>();


将类放入通用类参数中。

最佳答案

不,没有。

但是,如果您知道自己在做什么,则不需要严格使用泛型参数。您可以使用原始类型:

GenericClass generic = new GenericClass();


Java使用“擦除”来实现泛型-这意味着,如果您编写类似List<String> l = new ArrayList<String>();的内容,则编译器将检查您是否从未尝试将非String的内容放入其中,但是它将丢弃(擦除)泛型并将其转换为List l = new ArrayList();

因为GenericClass<Anything>实际上只是一个GenericClass,所以您可以直接使用GenericClass。每当使用它时,您都会收到一个编译器警告,并且您必须格外小心,只为它提供正确的对象,但是有时这是必要的。

09-30 23:03