gpt4 book ai didi

java - 没有字段的抽象类上的 NotSerializableException

转载 作者:塔克拉玛干 更新时间:2023-11-01 22:13:36 24 4
gpt4 key购买 nike

这是我的小类:

import java.io.Serializable;
public abstract class SerializableCallback extends Callback
implements Serializable {
private static final long serialVersionUID = 4544768712188843966L;
public abstract void handleMessage(Message msg);
}

这是它的更小的父 Callback:

public abstract class Callback {
public abstract void handleMessage(Message msg);
}

这是我的测试:

public void testSerialization() throws IOException, ClassNotFoundException {
SerializableCallback c = new SerializableCallback() {
private static final long serialVersionUID = -4852385037064234702L;
@Override
public void handleMessage(Message msg) {
callbackMethod();
}
};

FileOutputStream fos = new FileOutputStream(FILE);
ObjectOutputStream out = new ObjectOutputStream(fos);
out.writeObject(c); // fails
out.close();

FileInputStream fis = new FileInputStream(FILE);
ObjectInputStream in = new ObjectInputStream(fis);
Object object = in.readObject();
@SuppressWarnings("unused")
SerializableCallback d = (SerializableCallback) object;
}

private void callbackMethod() {}

测试在注释指示的行上给我一个 NotSerializableException。以下是一些肯定不会引起的原因:

  1. 缺少可序列化声明
  2. 不可序列化字段:根本没有字段
  3. 最接近的不可序列化父类型的不可见非参数构造函数

那么是什么导致了异常?

最佳答案

您的类没有无参数构造函数。它有一个构造函数,它接受一个参数,即外部类的 this。如果您使 testSerialization() static 它可能会解决问题。

但我怀疑您当前真正的问题是您的嵌套类引用了外部类,而外部类不是可序列化的。

关于java - 没有字段的抽象类上的 NotSerializableException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12917516/

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