java - 无效类型代码 : 30 java in ObjectInputStream

标签 java serialization

大家好,我试试看

If(in.readObject() instanceof String[])a = (String[]) in.readObject;

其中“in”是一个对象输入流,我得到一个“无效类型代码:30”;

但是没有if语句

   a = (String[]) in.readObject;

我没有收到任何错误。

最佳答案

一个对象输入流可以包含多个对象。每次调用 readObject() 时,它都会读入当前对象 - 然后向前移动。这意味着再次调用 readObject() 将尝试读取下一个对象。

因此,在您上面的代码中,您正在读取两个对象 - 不是同一个对象两次。

为确保您只读取第一个对象,请尝试以下操作:

Object obj = in.readObject();
if (obj instanceof String[]) {
    a = (String[]) obj;
}

注意我们只调用一次readObject(),然后检查存储在obj变量中的结果值。适本地类型转换它。

关于java - 无效类型代码 : 30 java in ObjectInputStream,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20300185/

相关文章:

java - 接受字符串而不是整数或 double 是否安全且更好?

node.js - 如何使用passport.js正确实现serializeUser?

ios - 通过 AirDrop 发送 NSArray

java - Java中没有arg构造函数和反序列化

javascript - 序列化 DOM 范围

导出时 Java 应用程序出现意外行为

java - 如何使 If 语句以 false boolean 值运行?

java - Java中的基本多态性/将父类(super class)转换为子类

java - 使用 boost::posix_time::ptime 序列化 XML 表示创建 Java 对象

Java/解析 : how to replace & symbol but not html codes