为啥我没有 NotSerializableException?
Posted
技术标签:
【中文标题】为啥我没有 NotSerializableException?【英文标题】:Why I don't have there NotSerializableException?为什么我没有 NotSerializableException? 【发布时间】:2021-04-20 01:02:44 【问题描述】:为什么我没有NotSerializableException
,因为在类A
中没有序列化我有private B b
,但我知道如果类实现Serializable
,所有复合类都必须实现Serializable
/Externalizable
也是。
import java.io.*;
public class Test
public static void main(String[] args) throws IOException
FileOutputStream fileOutput = new FileOutputStream("a.dat");
ObjectOutputStream outputStream = new ObjectOutputStream(fileOutput);
outputStream.writeObject(new A());
fileOutput.close();
outputStream.close();
class A implements Serializable
private int age;
private B b;
class B
【问题讨论】:
【参考方案1】:当您序列化 new A()
时,b
是 null
所以不是 B
。
重要的是运行时类型 - 例如,您可以使用 class BDerived extends B implements java.ui.Serializable
。或者 ArrayList
可以从 List
字段引用序列化。
如果您使用非null
、不可序列化的类型初始化b
,您会看到异常。比如
private B b = new B();
【讨论】:
以上是关于为啥我没有 NotSerializableException?的主要内容,如果未能解决你的问题,请参考以下文章
为啥我的 ModalViewController 没有释放?