我真的在努力使用通配符/泛型。我正在尝试创建一个FileManager
可以接受自定义 Java Bean 并将读/写 bean 写入文件的实用程序类。举个例子,假设我有一个名为的接口Data
,它由RecipeData
and实现DemographicData
。我正在使用Super CSV
将 CSV 文件转换为 Java Bean。这是我的阅读方法,它基于我从Super CSV
.
public interface Data { method declarations }
public class RecipeData implements Data { class stuff goes here }
public class DemographicData implements Data { class stuff goes here }
final public class FileManager {
public static void parseCsvFile(String filename, CellProcessor[] processors, String[] nameMappings, List<? extends Data> container) {
ICsvBeanReader beanReader = null;
try {
beanReader = new CsvBeanReader(new FileReader(filename), CsvPreference.STANDARD_PREFERENCE);
Data data;
while((data = beanReader.read(Data.class, nameMappings, processors)) != null ) {
container.add(data);
}
} finally {
if (beanReader != null) {
beanReader.close();
}
}
}
}
目前,我收到以下错误:
List 类型中的方法 add(capture#1-of ? extends Data) 不适用于参数 (Data)
我不确定我在做什么是可能的。这个想法是,container
传递的 可以是类型RecipeData
或DemographicData
。所以我认为一个问题是data
应该属于这两种类型。
任何人都可以就我如何解决这个问题或者它是否会工作提供反馈吗?
编辑:我真的不确定这是可能的。