这个方法可以实现深层复制,请问我的输出流已经关闭以后为什么可以使用byte[] buf = out.toByteArray();呢

public static Object deepcopy(Object obj) throws Exception{
try {
ByteArrayOutputStream out = new ByteArrayOutputStream();
ObjectOutputStream oos = new ObjectOutputStream(out);
oos.writeObject(obj);
oos.close();
byte[] buf = out.toByteArray();
ByteArrayInputStream in = new ByteArrayInputStream(buf);
ObjectInputStream ois = new ObjectInputStream(in);
Object o = ois.readObject();
in.close();
return o;
} catch (IOException e) {
throw new RuntimeException(e);
}

}

第1个回答  2011-11-25
out没有close追问

oos不是out的过滤器吗,它关了out也应该关了吧

追答

ObjectOutputStream 里包含 ByteArrayOutputStream ,要从外到内显示关闭。
你可以理解为byte管道外面有一层object管道。

本回答被提问者采纳