オブジェクトのリストを逆シリアル化しようとすると、いくつか問題が発生します。オブジェクトのリストを.datファイルにシリアル化しました。後でそのファイルからデータを取得したい場合、そのリストを逆シリアル化しようとすると、目的の結果が得られません。これがコードです。
シリアル化:
MyFile mf = new MyFile("2012-12-18.dat");
mf.Open();
FileOutputStream fos = mf.GetOS();
Iterator<Element> currencies = cube.select("Rate").iterator();
ISerializare[] lista = new ISerializare[31];
int i=0;
while (currencies.hasNext()){
MyCurrency newCurrency=new MyCurrency();
Element newElement=currencies.next();
newCurrency.setSymbol(newElement.attr("currency"));
newCurrency.setValue(Double.parseDouble(newElement.text()));
lista[i] = newCurrency;
System.out.println(newCurrency.toString());
i++;
}
DataOutputStream dos = new DataOutputStream(fos);
for(int j=0;j<i;j++){
lista[j].ObjectSerialization(dos);
}
dos.close();
public class MyFile {
File fisier;
String name;
public MyFile(String n){
name = n;
}
public void Open(){
fisier = new File(name);
}
public FileOutputStream GetOS() throws IOException{
return new FileOutputStream(fisier);
}
public FileInputStream GetIS() throws IOException{
return new FileInputStream(fisier);
}
}
MyFile mf = new MyFile("2012-12-18.dat");
mf.Open();
FileInputStream fis = mf.GetIS();
DataInputStream dis = new DataInputStream(fis);
for(ISerialization element:list){
element.ObjectDeserialization(dis);
System.out.println(element.toString());
MyCurencyクラスは次のとおりです。
public class MyCurrency implements ISerialization
{
private String symbol;
private double value;
public String getSymbol() {
return symbol;
}
public void setSymbol(String symbol) {
this.symbol = symbol;
}
public double getValue() {
return value;
}
public void setValue(double value) {
this.value = value;
}
public String toString(){
return symbol +" = "+value + " RON";
}
@Override
public void ObjectSerialization(DataOutputStream dos) throws IOException {
dos.writeDouble(value);
}
@Override
public void ObjectDeserialization(DataInputStream dis) throws IOException {
value = dis.readDouble();
}
何が悪いのか教えていただけますか?