我有一个像这样的通用方法:
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/