有人可以帮我这么做吗?
我无法反序列化。 如何反序列化该程序?
列出项目
public static void main(String[] args) {
contato acon [] = new contato[3];
acon [0] = new contato();
acon [0].setName("joyce");
acon [0].setAddress("hileia n° 587");
acon [0].setFone("789-456");
acon [1] = new contato();
acon [1].setName("naldo");
acon [1].setAddress("bairro da paz n°15821");
acon [1].setFone("654-123");
acon [2] = new contato();
acon [2].setName("jessica");
acon [2].setAddress("cidade nova n°15");
acon [2].setFone("456-789");
try {
FileOutputStream fs = new FileOutputStream("contato.ser");
ObjectOutputStream os = new ObjectOutputStream(fs);
os.writeObject(acon);
os.close();
} catch (Exception ex) {
ex.printStackTrace();
}
try {
FileInputStream fs = new FileInputStream("contato.ser");
ObjectInputStream oi = new ObjectInputStream(fs);
System.out.println(oi.readObject());
oi.close();
fs.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
取消分割此对象时始终会出错。
public class contato implements Serializable {
private String name;
private String address;
private String fone;
public void setName(String name) {
this.name = name;
}
public void setAddress(String address) {
this.address = address;
}
public void setFone(String fone) {
this.fone = fone;
}
public String getName() {
return name;
}
public String getAddress() {
return address;
}
public String getFone() {
return fone;
}
答案 0 :(得分:0)
我建议你不要“犯错误”。你看到的是试图打印数组的结果。这会调用System.out.println(Object)
,它调用contato [].toString()
,无法覆盖,因此它会打印类似[]
的类名和哈希码。这是可以预料的。如果要查看序列化数组的内容,则必须将其反序列化为数组对象,对其进行迭代,然后逐个打印元素。