在实现Parcelable的类中如何使用瞬态变量?

时间:2019-01-30 06:25:17

标签: java android class parcelable transient

我需要了解是应该在 modelClass(Parcel parcel)方法中从包裹中读取实现Parcelable接口的类中的临时变量,还是应该在 writeToParcel(Parcel)中将其写入包裹包裹,int i)。谁能为我提供一个带有瞬态变量的类实现。谢谢。

3 个答案:

答案 0 :(得分:0)

class Employee implements Serializable {
    private String firstName;
    private String lastName;
    private transient String confidentialInfo;

    //Setters and Getters
}

答案 1 :(得分:0)

您只需在声明变量的同时在数据类型之前添加瞬态关键字即可。

class Parcel implements Parcelable{
   private Integer checkinId;
   private transient String someCode;

   //// some methods
}

interface Parcelable implements{
  // some methods
}

答案 2 :(得分:0)

“瞬态”关键字对可包裹对象无效。读写可分割对象中的字段没有自动化,因此没有现成的代码将其考虑在内。对瞬态场进行特殊处理的任何可能选择完全取决于设计类的人。

规范(https://docs.oracle.com/javase/specs/jls/se7/html/jls-8.html#jls-8.3.1.3)说:“变量可能被标记为瞬态,以表明它们不是对象持久状态的一部分”,因此,如果您真的想要阅读本书,你不应该写它们。但是,正如我说的那样,由于读写是在类内部机械地完成的,所以transient关键字没有多大意义。