对象的序列化(Serialize)指将一个Java对象写入IO流中,与此对应的是,对象的反序列化(Deserialize)则指从IO流中恢复该Java对象。 jbbI g~/
为了让某个类是可序列化的,该类必须实现如下两个接口之一: t+j;Vvq
在一些特殊的场景下,如果某个类里包含的属性值是敏感信息,例如银行帐户信息、私人资料信息等等,这时候不希望系统将某些属性值进行序列化;或者某个属性的类是不可序列化的,因此不希望对该属性进行递归序列化,避免发生java.io.NotSerializableException异常。 K65 NK`
由于可序列化的对象可能会引发java.io.NotSerializableException异常。对于以上情况,我们可通过用transient关键字修饰,不希望序列化的属性而解决。通过在属性前面加上transient关键字,可以指定Java序列化时无需理会该属性值。如下Person类,其age属性使用了transient关键字修饰,那么该age属性就不会被序列化了。 J|`d2kQznC
public class Person implements java.io.Serializable [+r8tga
{ sQZP MN5D
private String name; [rf]cf^Z c
private transient int age; e[GbH78y{
public Person(String name , int age) tO2o>)k.
{ ^R0/, ck}
this.name = name; f}2=&ov
this.age = age; 7[xwS waCt
} <G z8NS
//省略setter和getter方法 !#ajdyk&b
} XJu}a+p$6e
为了让某个类是可序列化的,该类必须实现如下两个接口之一: t+j;Vvq
- Serializable
- Externalizable
在一些特殊的场景下,如果某个类里包含的属性值是敏感信息,例如银行帐户信息、私人资料信息等等,这时候不希望系统将某些属性值进行序列化;或者某个属性的类是不可序列化的,因此不希望对该属性进行递归序列化,避免发生java.io.NotSerializableException异常。 K65 NK`
由于可序列化的对象可能会引发java.io.NotSerializableException异常。对于以上情况,我们可通过用transient关键字修饰,不希望序列化的属性而解决。通过在属性前面加上transient关键字,可以指定Java序列化时无需理会该属性值。如下Person类,其age属性使用了transient关键字修饰,那么该age属性就不会被序列化了。 J|`d2kQznC
public class Person implements java.io.Serializable [+r8tga
{ sQZP MN5D
private String name; [rf]cf^Z c
private transient int age; e[GbH78y{
public Person(String name , int age) tO2o>)k.
{ ^R0/, ck}
this.name = name; f}2=&ov
this.age = age; 7[xwS waCt
} <G z8NS
//省略setter和getter方法 !#ajdyk&b
} XJu}a+p$6e