Java Generic - 如何组合静态函数?

标签 java generics

在 Java 中是否可以以 C++ 模板参数的方式组合这两个静态函数?我尝试过传入类,但这只是给出了不知道类型参数是什么的错误。抱歉,我已经在 google 上搜索了很多内容,但我是 Java 新手,并且很难弄清楚这个问题。

import com.univocity.parsers.common.processor.BeanListProcessor;
import com.univocity.parsers.tsv.TsvParser;
import com.univocity.parsers.tsv.TsvParserSettings;

import java.io.FileNotFoundException;
import java.io.FileReader;
import java.util.List;

public class Parsers {
    public static List<ThingOne> ParseThingOne(String fName) throws FileNotFoundException
    {
        BeanListProcessor<ThingOne> rowProcessor = new BeanListProcessor<ThingOne>(ThingOne.class);
        TsvParserSettings tsvSet = new TsvParserSettings();
        tsvSet.setHeaderExtractionEnabled(true);
        tsvSet.setProcessor(rowProcessor);
        TsvParser p = new TsvParser(tsvSet);
        FileReader f = new FileReader(fName);
        p.parse(f);
        return rowProcessor.getBeans();
    }

    public static List<ThingTwo> ParseThingTwo(String fName) throws FileNotFoundException
    {
        BeanListProcessor<ThingTwo> rowProcessor = new BeanListProcessor<ThingTwo>(ThingTwo.class);
        TsvParserSettings tsvSet = new TsvParserSettings();
        tsvSet.setHeaderExtractionEnabled(true);
        tsvSet.setProcessor(rowProcessor);
        TsvParser p = new TsvParser(tsvSet);
        FileReader f = new FileReader(fName);
        p.parse(f);
        return rowProcessor.getBeans();
    }
}

最佳答案

不知道为什么你说通过类(class)对你不起作用。这应该有效:

List<ThingOne> l1 = parse(ThingOne.class, "file1");
List<ThingTwo> l2 = parse(ThingTwo.class, "file2");

public static <T> List<T> parse(Class<T> clazz, String fName) throws FileNotFoundException{
    BeanListProcessor<T> rowProcessor = new BeanListProcessor<>(clazz);
    TsvParserSettings tsvSet = new TsvParserSettings();
    tsvSet.setHeaderExtractionEnabled(true);
    tsvSet.setProcessor(rowProcessor);
    TsvParser p = new TsvParser(tsvSet);
    FileReader f = new FileReader(fName);
    p.parse(f);        
    return rowProcessor.getBeans();
}

关于Java Generic - 如何组合静态函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48770761/

相关文章:

java - 阐明不使用泛型

c# - 帮助使用 .NET Generics/Dictionary 替换我的数组

generics - DryIoC 根据泛型类型参数将参数传递给开放泛型服务的构造函数

android - 如何使用 kotlin 在构造函数中创建传递方法引用的泛型类实例

java - 从 MySQL 数据库检索值仅提供空值

java - Spring MVC : Redirecting to home page no matter what link it is.

java - 替换 spring/hibernate 项目中的 import.sql 文件

java - 自定义类加载器有什么用

java - 不使用数组计算字符串中的唯一单词

c# - 在通用类中动态定义 DataContract 和 DataMember