Java 返回通用列表

Java 返回通用列表,java,generics,generic-list,Java,Generics,Generic List,我想加载一个通用列表。因此,我想使用如下函数: public static <T> List<T> load() { FileInputStream fileStream = null; List<T> toReturn = new ArrayList<T>(); String fileExtension = toReturn.getClass().getComponentType().getSimpleName();

我想加载一个通用列表。因此,我想使用如下函数:

public static <T> List<T> load()
{
    FileInputStream fileStream = null;
    List<T> toReturn = new ArrayList<T>();
    String fileExtension = toReturn.getClass().getComponentType().getSimpleName();
    ...
}
公共静态列表加载()
{
FileInputStream fileStream=null;
List toReturn=new ArrayList();
字符串fileExtension=toReturn.getClass().getComponentType().getSimpleName();
...
}
如果您可以看到,我想获取类型(“T”),以搜索具有这些扩展名的文件。但如果我打电话:

StorageUtil.<MyClass>load();
StorageUtil.load();

我得到一个异常,而不是将“MyClass”作为文件扩展名。我的代码出了什么问题?

问题是Java中的泛型不是这样工作的-由于类型擦除,在执行时无法找到
t
的类型。如果在执行时需要该类型,可以添加
Class
参数:

public static <T> List<T> load(Class<T> clazz) {
    ... use class.newInstance() to create a new instance, etc
}
公共静态列表加载(类clazz){
…使用class.newInstance()创建新实例等
}

有关更多信息,请参阅。

问题在于Java中的泛型不是这样工作的-由于类型擦除,在执行时无法找到
t
的类型。如果在执行时需要该类型,可以添加
Class
参数:

public static <T> List<T> load(Class<T> clazz) {
    ... use class.newInstance() to create a new instance, etc
}
公共静态列表加载(类clazz){
…使用class.newInstance()创建新实例等
}

有关详细信息,请参阅。

“我获得异常[…]”请显示stacktrace!'我得到一个异常[…]”-请显示stacktrace!