さまざまなタイプのJava Beans(したがってList<JavaBean>
)をファイルに書き込む一般的なメソッドを記述しようとしています。私は現在FileManager
ユーティリティクラスを構築中です。各Java Beanは同じインタフェースを実装しています。ここに私がしようとしているものの例があります。Java:メソッドと同じインターフェイスを実装する別のカスタムオブジェクトを渡す
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>();
どのようにこれが正常に行われるのでしょうか?スウィフトでは、私はasを使うかもしれない?キーワードを使用して正しいタイプにキャストします。
************** ************** EDIT
ちょうど私がするのを支援するためにSuperCSVライブラリを使用してい序文します行をJava Beanに解析して、メソッド定義のために以下の受け入れられた答えを使用しています。私は次のエラーを取得する
Data dataset;
while((dataset = beanReader.read(Data.class, nameMappings, processors)) != null) {
container.add(dataset);
}
:
The method add(capture#1-of ? extends Data) in the type List is not applicable for the arguments (Data)
データセットはこれが機能するために、私が想定したいタイプRecipeDataまたはDemographicDataのいずれかであることが必要。だから私は、次のコードを持っています将来的にBeanを追加すると柔軟になるようにこれを修正する簡単な方法はありますか?
あなたが受け取ったエラーにはどのようなものがありますか? –
'List <? Data> data = new ArrayList(); ' –
私は受け取っているエラーで、下のポストを更新しました。私は受け入れられた回答メソッドの宣言を使用しています。 –