一些敏感信息,比如密码和银行卡号等在java对象序列化时不希望被序列化,不被序列化的属性就不会被存储到磁盘上,或通过网络传输。为了实现属性不被序列化,只需要在属性前加上transient关键字就能达到目的。
但是,使用transient的属性就一定不会被序列化吗?带着这个疑问,我们开始进行一下测试,看看真相到底是什么样的。
被序列化的类首先需要实现Serializable接口,序列化时使用ObjectOutputStream的writeObject()方法,将类实例写入到对象流中。反序列化时使用ObjectInputStream的readObject()方法,从对象流读取对象。
@Getter
@Setter
public class Transient1 implements Serializable{
private int id;
private String name;
private transient String accountNum;
public String toString(){
return "id:" + id +
",name:" + name +
",accountNum:" + accountNum;
}
public static void main(String[] args) throws IOException, ClassNotFoundException {
//创建对象
Transient1 t = new Transient1()