Java泛型-如何组合静态函数? 在java中,可以将这两个静态函数结合在C++模板参数的样式中吗?我试着传入这个类,但这只会导致不知道类型参数是什么的错误。对不起,我在谷歌上搜索了一段时间,但我对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(); } } import com.univocity.parsers.common.processor.BeanListProcessor; 导入com.univocity.parsers.tsv.TsvParser; 导入com.univocity.parsers.tsv.TsvParserSettings; 导入java.io.FileNotFoundException; 导入java.io.FileReader; 导入java.util.List; 公共类解析器{ 公共静态列表ParseThingOne(字符串fName)引发FileNotFoundException { BeanListProcessor rowProcessor=新的BeanListProcessor(ThingOne.class); TsvParserSettings tsvSet=新的TsvParserSettings(); tsvSet.setHeaderExtractionEnabled(真); tsvSet.setProcessor(rowProcessor); TsvParser p=新的TsvParser(tsvSet); FileReader f=新的FileReader(fName); p、 解析(f); 返回rowProcessor.getBeans(); } 公共静态列表ParseThingTwo(字符串fName)引发FileNotFoundException { BeanListProcessor rowProcessor=新的BeanListProcessor(ThingTwo.class); TsvParserSettings tsvSet=新的TsvParserSettings(); tsvSet.setHeaderExtractionEnabled(真); tsvSet.setProcessor(rowProcessor); TsvParser p=新的TsvParser(tsvSet); FileReader f=新的FileReader(fName); p、 解析(f); 返回rowProcessor.getBeans(); } }

Java泛型-如何组合静态函数? 在java中,可以将这两个静态函数结合在C++模板参数的样式中吗?我试着传入这个类,但这只会导致不知道类型参数是什么的错误。对不起,我在谷歌上搜索了一段时间,但我对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(); } } import com.univocity.parsers.common.processor.BeanListProcessor; 导入com.univocity.parsers.tsv.TsvParser; 导入com.univocity.parsers.tsv.TsvParserSettings; 导入java.io.FileNotFoundException; 导入java.io.FileReader; 导入java.util.List; 公共类解析器{ 公共静态列表ParseThingOne(字符串fName)引发FileNotFoundException { BeanListProcessor rowProcessor=新的BeanListProcessor(ThingOne.class); TsvParserSettings tsvSet=新的TsvParserSettings(); tsvSet.setHeaderExtractionEnabled(真); tsvSet.setProcessor(rowProcessor); TsvParser p=新的TsvParser(tsvSet); FileReader f=新的FileReader(fName); p、 解析(f); 返回rowProcessor.getBeans(); } 公共静态列表ParseThingTwo(字符串fName)引发FileNotFoundException { BeanListProcessor rowProcessor=新的BeanListProcessor(ThingTwo.class); TsvParserSettings tsvSet=新的TsvParserSettings(); tsvSet.setHeaderExtractionEnabled(真); tsvSet.setProcessor(rowProcessor); TsvParser p=新的TsvParser(tsvSet); FileReader f=新的FileReader(fName); p、 解析(f); 返回rowProcessor.getBeans(); } },java,generics,Java,Generics,如果您创建一个接口或类并使两个类继承/扩展自该接口或类,则可以使用Java泛型。例如,如果您制作一个接口MyInterface,这样: ThingOne实现MyInterface和ThingTwo实现MyInterface。然后您可以编写一个通用函数,如下所示: public static <T extends MyInterface> List<T> ParseThing(String fName, Class<T> clazz) throws FileNo

如果您创建一个接口或类并使两个类继承/扩展自该接口或类,则可以使用Java泛型。例如,如果您制作一个接口
MyInterface
,这样:
ThingOne实现MyInterface
ThingTwo实现MyInterface
。然后您可以编写一个通用函数,如下所示:

public static <T extends MyInterface> List<T> ParseThing(String fName, Class<T> clazz) throws FileNotFoundException
{
    BeanListProcessor<T> rowProcessor = new BeanListProcessor<T>(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();
}
公共静态列表解析(字符串fName,类clazz)抛出FileNotFoundException
{
BeanListProcessor rowProcessor=新的BeanListProcessor(clazz);
TsvParserSettings tsvSet=新的TsvParserSettings();
tsvSet.setHeaderExtractionEnabled(真);
tsvSet.setProcessor(rowProcessor);
TsvParser p=新的TsvParser(tsvSet);
FileReader f=新的FileReader(fName);
p、 解析(f);
返回rowProcessor.getBeans();
}

如果您创建一个接口或类并使两个类继承/扩展自该接口或类,则可以使用Java泛型。例如,如果您制作一个接口
MyInterface
,这样:
ThingOne实现MyInterface
ThingTwo实现MyInterface
。然后您可以编写一个通用函数,如下所示:

public static <T extends MyInterface> List<T> ParseThing(String fName, Class<T> clazz) throws FileNotFoundException
{
    BeanListProcessor<T> rowProcessor = new BeanListProcessor<T>(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();
}
公共静态列表解析(字符串fName,类clazz)抛出FileNotFoundException
{
BeanListProcessor rowProcessor=新的BeanListProcessor(clazz);
TsvParserSettings tsvSet=新的TsvParserSettings();
tsvSet.setHeaderExtractionEnabled(真);
tsvSet.setProcessor(rowProcessor);
TsvParser p=新的TsvParser(tsvSet);
FileReader f=新的FileReader(fName);
p、 解析(f);
返回rowProcessor.getBeans();
}

尝试以下方法:

public static <T> List<T> parseThing( final String fName, final BeanListProcessor<T> rowProcessor )
  throws FileNotFoundException
{
    final TsvParserSettings tsvSet = new TsvParserSettings();
    tsvSet.setHeaderExtractionEnabled(true);
    tsvSet.setProcessor(rowProcessor);
    final TsvParser p = new TsvParser(tsvSet);
    final FileReader f = new FileReader(fName);
    p.parse(f);
    return rowProcessor.getBeans();
}
公共静态列表解析(最终字符串fName,最终BeanListProcessor rowProcessor)
抛出FileNotFoundException
{
最终TsvParserSettings tsvSet=新的TsvParserSettings();
tsvSet.setHeaderExtractionEnabled(真);
tsvSet.setProcessor(rowProcessor);
最终TsvParser p=新TsvParser(tsvSet);
最终文件读取器f=新文件读取器(fName);
p、 解析(f);
返回rowProcessor.getBeans();
}
被这样的称呼:

parseThing( "filename1", new BeanListProcessor<ThingOne>(FundPrice.class));

parseThing( "filename2", new BeanListProcessor<ThingTwo>(FundMapping.class));
parseThing(“filename1”,新的BeanListProcessor(FundPrice.class));
parseThing(“filename2”,新的BeanListProcessor(FundMapping.class));

尝试以下方法:

public static <T> List<T> parseThing( final String fName, final BeanListProcessor<T> rowProcessor )
  throws FileNotFoundException
{
    final TsvParserSettings tsvSet = new TsvParserSettings();
    tsvSet.setHeaderExtractionEnabled(true);
    tsvSet.setProcessor(rowProcessor);
    final TsvParser p = new TsvParser(tsvSet);
    final FileReader f = new FileReader(fName);
    p.parse(f);
    return rowProcessor.getBeans();
}
公共静态列表解析(最终字符串fName,最终BeanListProcessor rowProcessor)
抛出FileNotFoundException
{
最终TsvParserSettings tsvSet=新的TsvParserSettings();
tsvSet.setHeaderExtractionEnabled(真);
tsvSet.setProcessor(rowProcessor);
最终TsvParser p=新TsvParser(tsvSet);
最终文件读取器f=新文件读取器(fName);
p、 解析(f);
返回rowProcessor.getBeans();
}
被这样的称呼:

parseThing( "filename1", new BeanListProcessor<ThingOne>(FundPrice.class));

parseThing( "filename2", new BeanListProcessor<ThingTwo>(FundMapping.class));
parseThing(“filename1”,新的BeanListProcessor(FundPrice.class));
parseThing(“filename2”,新的BeanListProcessor(FundMapping.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();
}
List l1=parse(ThingOne.class,“file1”);
列表l2=parse(ThingTwo.class,“file2”);
公共静态列表解析(类clazz,字符串fName)抛出FileNotFoundException{
BeanListProcessor rowProcessor=新的BeanListProcessor(clazz);
TsvParserSettings tsvSet=新的TsvParserSettings();
tsvSet.setHeaderExtractionEnabled(真);
tsvSet.setProcessor(rowProcessor);
TsvParser p=新的TsvParser(tsvSet);
FileReader f=新的FileReader(fName);
p、 解析(f);
返回rowProcessor.getBeans();
}

不知道你为什么说通过考试对你不起作用。这应该起作用:

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();
}
List l1=parse(ThingOne.class,“file1”);
列表l2=parse(ThingTwo.class,“file2”);
公共静态列表解析(类clazz,字符串fName)抛出FileNotFoundException{
BeanListProcessor rowProcessor=新的BeanListProcessor(clazz);
TsvParserSettings tsvSet=新的TsvParserSettings();
tsvSet.setHeaderExtractionEnabled(真);
tsvSet.setProcessor(rowProcessor);
TsvParser p=新的TsvParser(tsvSet);
FileReader f=新的FileReader(fName);
p、 解析(f);
返回rowProcessor.getBeans();
}

ThingOne和ThingTwo是类层次结构的一部分吗?在我看来,ThingOne和ThingTwo需要共享一个接口或基类。那么你应该能够在这个基础上结合这两种方法。基本上我是塔曼蓝的。java与C++不同,而不是