gpt4 book ai didi

java - Java 中反序列化 ArrayList

转载 作者:行者123 更新时间:2023-12-01 15:51:45 29 4
gpt4 key购买 nike

我有自己的小串行器类

package mypackage.shared;

import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;

public class Serializer {

static final String HEXES = "0123456789ABCDEF";

public static String serialize(Object o) throws IOException {
ByteArrayOutputStream stream = new ByteArrayOutputStream();
ObjectOutputStream os = new ObjectOutputStream(stream);

os.writeObject(o);
os.close();
return toHex(stream.toByteArray());
}

public static Object deserialize(String hexString) throws IOException, ClassNotFoundException {
byte[] serializedBytes = toByteArray(hexString);
ByteArrayInputStream bis = new ByteArrayInputStream(serializedBytes);
ObjectInputStream ois = new ObjectInputStream(bis);

Object o = null;
o = ois.readObject();
ois.close();
return o;
}

public static String toHex( byte [] raw ) {
if ( raw == null ) {
return null;
}
final StringBuilder hex = new StringBuilder( 2 * raw.length );
for ( final byte b : raw ) {
hex.append(HEXES.charAt((b & 0xF0) >> 4))
.append(HEXES.charAt((b & 0x0F)));
}
return hex.toString();
}

private static byte[] toByteArray(String s) {
int len = s.length();
byte[] data = new byte[len / 2];
for (int i = 0; i < len; i += 2) {
data[i / 2] = (byte) ((Character.digit(s.charAt(i), 16) << 4)
+ Character.digit(s.charAt(i+1), 16));
}
return data;
}

}

它非常适合我拥有的一些自制元素。但是,一旦我有了这些对象的 ArrayList,它就无法反序列化它们。知道为什么会这样吗?我发现很难调试,因为 readObject() 失败了

最佳答案

如果序列化不起作用,则意味着某些对象不可序列化。

尝试反序列化仅包含一个 home 对象的数组列表,并对所有 home 对象执行此操作

关于java - Java 中反序列化 ArrayList,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5889045/

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