看LinkedList源码看到transient关键字,于是乎很好奇,从来没见过哦
首先transient关键字的作用:当类使用Serializable序列化的时候,使用transient修饰的变量将只会放在内存里,而不会写在磁盘上,下面做一个测试:
被序列化的类:
public class TestTransientEntity implements Serializable {
private int id;
private String name;
private transient int age;
public int getId() {
return id;
}
public String getName() {
return name;
}
public int getAge() {
return age;
}
public void setId(int id) {
this.id = id;
}
public void setName(String name) {
this.name = name;
}
public void setAge(int age) {
this.age = age;
}
}
其中age是被transient修饰了,毕竟年龄不能随便让人知道嘛
TestTransientEntity entity = new TestTransientEntity();
entity.setId(1);
entity.setName("jack");
entity.setAge(18);
Intent intent = new Intent(this,TestTransientActivity.class);
Bundle bundle = new Bundle();
bundle.putSerializable("entity",entity);
intent.putExtra("bundle",bundle);
startActivity(intent);
在第一个activity中初始化entity,并序列换之后传给TestTransientActivity
Bundle bundle = getIntent().getBundleExtra("bundle");
TestTransientEntity entity = (TestTransientEntity) bundle.get("entity");
Log.w("打印","姓名 "+entity.getName()
+" ID "+entity.getId()
+" 年龄 "+entity.getAge());
打印结果:
W/打印: 姓名 jack ID 1 年龄 0