java抽象类的字段_java – 没有字段的抽象类上的NotSerializableException

这是我的小班:

import java.io.Serializable;

public abstract class SerializableCallback extends Callback

implements Serializable {

private static final long serialVersionUID = 4544768712188843966L;

public abstract void handleMessage(Message msg);

}

这是它更简单的父级回调:

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.这里有几件事情肯定不会引起:

>缺少Serializable声明

>不可序列化的字段:根本没有字段

>最接近的非可序列化父类型的不可见非arg构造函数

那导致异常的原因是什么?

解决方法:

你的类没有no-arg构造函数.它有一个构造函数,它接受一个外部类的参数.如果你使testSerialization()静态,它可能会解决问题.

但我怀疑你的直接真正的问题是你的nest类有一个对外部类的引用而外部类不是Serializable.

标签:java,serialization

来源: https://codeday.me/bug/20190725/1537079.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值