java 反序列化 构造函数_java - 如何从Number值反序列化为int(错误 - 没有int / Int-argument构造函数/工厂方法从Number值反序列化) - 堆栈内存溢出...
时间: 2024-02-01 15:14:17 浏览: 91
JAVA常用英文
这个错误通常是由于反序列化时没有找到适当的构造函数或工厂方法导致的。如果您正在尝试将Number值反序列化为int值,则可以尝试使用自定义反序列化方法来解决此问题。
例如,您可以创建一个名为readObject的私有方法,并使用ObjectInputStream的defaultReadObject方法读取对象。然后,您可以将Number值转换为int值,如下所示:
```java
private void readObject(ObjectInputStream in) throws IOException, ClassNotFoundException {
in.defaultReadObject();
value = ((Number)value).intValue();
}
```
在上面的代码中,我们首先调用了defaultReadObject方法以读取对象,然后将Number值强制转换为int值并将其设置为实例变量。请注意,这里的value是您要反序列化的int值。
如果您的类中没有实例变量,则可以重写readResolve方法来返回一个新的int实例。例如:
```java
private Object readResolve() throws ObjectStreamException {
return ((Number)value).intValue();
}
```
这将返回一个新的int实例,其中包含从Number值反序列化的值。
阅读全文