gpt4 book ai didi

java - 如何从 java.io.ObjectInputStream 中很好地读取未知数量的对象?

转载 作者:行者123 更新时间:2023-12-02 09:21:13 25 4
gpt4 key购买 nike

我找到了this page这建议循环直到抛出异常,然后处理该异常。

基本上它的建议是:

[...]
try {
while (true) {
objectInputStream.readObject();
}
}
catch ( EOFException e ) {
\\ This ALWAYS happens
}
[...]

然而,正如 Bloch 在《Effective Java》中所说,人们应该只“在异常情况下使用异常”,并且现在不包含无限数量对象的输入流实际上没有任何异常,不是吗?每次都会发生这种情况!

由于ObjectInputStream上没有hasNext方法,我该怎么办?我真的坚持使用异常来了解何时没有更多对象可供读取吗?

最佳答案

有很多方法可以做到这一点,在我看来,它们都很好:

  • 使用异常。正如你所说,API 设计者没有包含一个方法来检查是否还有更多,所以这部分是他们的错

  • 写入流时使用标记对象。例如 Integer.MAX_VALUE 或自定义 EOFMarker 对象。如果发现,则停止。

  • 不要编写对象本身,而是编写一个List。然后阅读列表

关于java - 如何从 java.io.ObjectInputStream 中很好地读取未知数量的对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5538212/

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