gpt4 book ai didi

Java 将 ObjectInputStream 结果转换为 ArrayList

转载 作者:行者123 更新时间:2023-12-01 09:51:28 24 4
gpt4 key购买 nike

有没有办法将 OutputStream 立即转换为 ArrayList?

我正在这里测试一些东西以及我所得到的例如:

写作:

// Some list
List<Edge> edges = = new ArrayList<>();
edges.add(new Edge...)
edges.add(new Edge...)
...

OutputStream outStream = socket.getOutputStream();
ObjectOutputStream out = new ObjectOutputStream(outStream);
out.writeObject(edges);

阅读

InputStream inStream = socket.getInputStream();
ObjectInputStream in = new ObjectInputStream(inStream);
Object inObject = in.readObject();
if (inObject.getClass() == ArrayList.class) {
System.err.println("IS LIST");
List<Edge> edges = (List<Edge>) in.readObject();
}

结果

IS LIST
Jun 01, 2016 6:15:05 PM client.Client main
SEVERE: null
java.io.EOFException
at java.io.ObjectInputStream$BlockDataInputStream.peekByte(ObjectInputStream.java:2608)
at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1319)
at java.io.ObjectInputStream.readObject(ObjectInputStream.java:371)
at client.Client.main(Client.java:86)

最佳答案

EOFException 是“文件结束”异常。这意味着当没有更多数据可供读取时(已经在文件末尾),您尝试读取数据。

出现这种情况是因为您正在读取 2 个对象,但只发送 1 个对象。无需第二次调用 in.readObject(),只需转换您已读取的对象即可:

list = (List<Edge>) inObject;

关于Java 将 ObjectInputStream 结果转换为 ArrayList,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37573905/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com