序列化指把java对象变成字节序列,它包含该对象的数据、有关对象的类型信息和存储到对象中数据的类型。ObjectInputStream与ObjectOutputStream分别包含对对象进行反序列化与序列化的方法。

Java实现序列化的方式

可以通过实现Serializable接口或Externalizable接口。若实现前者,会自动进行序列化,可以通过添加transient关键字修饰不需要进行序列化的属性;若实现后者,不会自动进行序列化,需要手工制定需要序列化的变量。

问题

如果一个可序列化Java对象的一个对象属性不可序列化。当对该对象进行序列化时,其对象属性是否会序列化?

初步答案:不可,因为该对象属性不可序列化。

实际:报异常NotSerializableException。如果对不可序列化属性使用triansient关键字修饰,则不会。