ファイルからシリアル化されたオブジェクトを読み取ることができる一般的なloadFileメソッドを作成しようとしています。ただし、オブジェクトの種類はロードするファイルによって異なる場合があります。私は明らかにキャスティングの仕組みを誤解していましたが、私がここでやるべきことを本当に見つけることができません。ArrayList <Object>をArrayListにキャストできません<MyObject>
見ることができるようにpublic class FileAdapter {
public ArrayList<Transaction> loadTransactions() {
return (ArrayList<Transaction>) loadFile(new File("data/transactions.ser"));
}
public ArrayList<Fund> loadFunds() {
return (ArrayList<Fund>) loadFile(new File("data/funds.ser"));
}
private ArrayList<Object> loadFile(File file) {
ArrayList<Object> obj = new ArrayList<>();
FileInputStream fis = new FileInputStream(file);
in = new ObjectInputStream(fis);
obj = (ArrayList<Object>) in.readObject();
return obj;
}
}
、私はファイルからさまざまな種類のオブジェクトをロードする二つの方法がありますが、私は実際にファイルをロードするコードを共有したい:
以下は私のFileAdapterクラスです。私がしようとしていることは実現可能ですが、間違って実装されているのですか?
'loadFile()'は 'in.readObject()'からオブジェクトを返すこともできます。そして、呼び出し元がそれをキャストする対象を決定させることができます。 – nickb
またはいくつかのジェネリック(つまり、ArrayList loadFile) –
そのようなものが必要なら、 'private T ArrayList loadFile(File file)'のようなジェネリックを使うべきです。 –