0

我真的在努力使用通配符/泛型。我正在尝试创建一个FileManager可以接受自定义 Java Bean 并将读/写 bean 写入文件的实用程序类。举个例子,假设我有一个名为的接口Data,它由RecipeDataand实现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传递的 可以是类型RecipeDataDemographicData。所以我认为一个问题是data应该属于这两种类型。

任何人都可以就我如何解决这个问题或者它是否会工作提供反馈吗?

编辑:我真的不确定这是可能的。

4

1 回答 1

0

不要使用通配符List<? extends Data> container,而是使用List<Data> container.

于 2016-06-13T21:07:50.343 回答