【发布时间】:2016-06-13 18:44:30
【问题描述】:
我正在尝试编写一个通用方法,将不同类型的 Java Bean(所以 List<JavaBean>)写入文件。我目前正在构建一个FileManager 实用程序类。每个 Java Bean 实现相同的接口。这是我正在尝试做的一个示例。
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 writeToCsvFile(String filename, List<Data> data) { file writing logic goes here }
}
我希望能够将List<RecipeData> 和List<DemographicData> 传递给此方法。显然我所拥有的不起作用。
似乎我什至无法做到以下几点:
List<Data> data = new ArrayList<RecipeData>();
这通常是如何完成的?在 Swift 中,我可能会使用 as?关键字将其转换为正确的类型。
**************编辑**************
作为序言,我正在使用 SuperCSV 库来帮助将行解析为 Java Bean,并且我正在使用下面接受的答案来定义方法。所以我有以下代码:
Data dataset;
while((dataset = beanReader.read(Data.class, nameMappings, processors)) != null ) {
container.add(dataset);
}
我收到以下错误:
类型List中的add(capture#1-of ? extends Data)方法不适用于参数(Data)
dataset 需要是 RecipeData 或 DemographicData 类型才能正常工作。有没有一种简单的方法可以解决这个问题,以便将来添加更多 Bean 时灵活?
【问题讨论】:
-
您收到的错误是什么?
-
List<? implements Data> data = new ArrayList<RecipeData>(); -
更新了底部的帖子,我收到了错误。我正在使用接受的答案方法声明。
标签: java