我们都知道,Java要序列化一个对象要实现Serializable接口,然后我们在rpc传输或者实例化时候就可以把参数序列化。但是某些字段我们可能不想将他序列化,比如密码,证件号这些字段,这时候transient就派上用场了,我们看下面代码:
public class TestDomain implements Serializable {
private String a;
private String b;
private transient String c;
public String getA() {
return a;
}
public void setA(String a) {
this.a = a;
}
public String getB() {
return b;
}
public void setB(String b) {
this.b = b;
}
public String getC() {
return c;
}
public void setC(String c) {
this.c = c;
}
public static void main(String[] args) {
TestDomain domain = new TestDomain();
domain.setA("A");
domain.setB("B");
domain.setC("C");
System.out.println(JSON.toJSONString(domain));
}
}
main执行的结果
{"a":"A","b":"B"}
通过示例我们可以发现,transient自动屏蔽了我们不想序列化的字段。