在调用接受Class <T>并返回T的泛型方法时,如何返回某个类型的列表?

Dan*_*lan 6 java generics warnings casting

我正在使用此签名从库中调用方法:

public <T> T get(Class<T> c)
Run Code Online (Sandbox Code Playgroud)

而且我想获得List<MyClass>一个返回值.但是这样调用它不会编译("无法从参数化类型中选择"):

List<MyClass> myClasses = get(List<MyClass>.class);
Run Code Online (Sandbox Code Playgroud)

这编译,但发出警告:

List<MyClass> myClasses = get(List.class);
Run Code Online (Sandbox Code Playgroud)

警告说"未经检查的分配".如何避免此警告并避免列出我的列表?

cmb*_*ter 3

您在这里使用泛型,因此列表中项目的基础类型已在运行时被删除,并且编译器知道它无法在编译时为您检查它,因此会出现警告。如果您在这里使用泛型类型,您将无法避免警告。如果您确定所做的转换不会导致异常,则可以抑制它。

@SuppressWarnings("unchecked")
Run Code Online (Sandbox Code Playgroud)