java - 如何检索泛型类型的类

标签 java generics

我有一个像这样的通用方法:

public class ClassName {
    public <T> List<T> methodeName(String path)
        throws FileNotFoundException {
    CSVReader reader = new CSVReader(new FileReader(path), ',', '\"');

    HeaderColumnNameTranslateMappingStrategy<T> strat = new HeaderColumnNameTranslateMappingStrategy<T>();

    strat.setType(T.class);

在最后一行 (T.class) eclipse 向我展示了这个语法错误 类型参数 T 的非法类文字

这里提出了一个像这样的解决方案: Java generics - retrieve type不会帮助我。方法 getClass() 只会返回当前类。

我是泛型的新手,但我确信这个问题有一个简单的答案。

最佳答案

简单的答案是:你必须传递一个 Class<T>方法的参数。

public <T> List<T> methodeName(String path, Class<T> clazz) throws FileNotFoundException {
    CSVReader reader = new CSVReader(new FileReader(path), ',', '\"');

    HeaderColumnNameTranslateMappingStrategy<T> strat = 
        new HeaderColumnNameTranslateMappingStrategy<T>();
    strat.setType(clazz);
}

...

ClassName cn = new ClassName();
List<Foo> foos = cn.methodeName(somePath, Foo.class);

关于java - 如何检索泛型类型的类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9079744/

相关文章:

java - 如何从泛型中获取类类型信息?

java - 新对象参数/对象构造函数设置

Java 给出 00 :00:00 time when gathering dateTime from MySQL

java - 通用接口(interface)未按预期运行

Java - 仅使用 "<? extends Interface>"与接口(interface)

C# 扩展方法编译/兼容性检查失败基于命名空间的顺序

java - lwjgl glDrawArrays 给出无效操作错误

java - 脚本语言 - 在服务器上执行

java - 检测手机 hibernate 时的手势

swift - 使用 Swift Optional 类型的奇怪行为