如何获取泛型类的Class <?>对象

ano*_*ias 5 java generics

我有一个静态方法,它将根据类的类型返回自定义类型,

public class GenericMethod {

    public static <T> T returnGeneric(Class<T> clazz) {
        return null;
    }

}
Run Code Online (Sandbox Code Playgroud)

现在,我想传递一个带有泛型类的类,

CustomType<String> type = GenericMethod.returnGeneric(CustomType.class);
Run Code Online (Sandbox Code Playgroud)

唯一的问题是上面的语句给出和取消选中转换警告.

我尝试了解决new CustomType<String>().getName()问题的解决方法.

有没有正确的方法,或唯一的解决方案是使用@SuppressWarnings

Ger*_*Cap 1

您想要/应该尝试的是:

CustomType<String> type = GenericMethod.returnGeneric(CustomType<String>.class);
Run Code Online (Sandbox Code Playgroud)

CustomType<A>.class不幸的是,由于类型擦除,和之间没有区别CustomType<B>.class,因此 Java 不支持这种语法。

所以我的 $.02:你所要求的是不可能的,所以坚持@suppresswarnings...