【发布时间】:2019-06-23 08:56:04
【问题描述】:
我需要了解实现 Parcelable 接口的类中的瞬态变量是否应该在 modelClass(Parcel parcel) 方法中从 parcel 中读取或写入 writeToParcel(Parcel包裹,int i) 。任何人都可以为我提供一个包含瞬态变量的类实现。谢谢。
【问题讨论】:
标签: java android class parcelable transient
我需要了解实现 Parcelable 接口的类中的瞬态变量是否应该在 modelClass(Parcel parcel) 方法中从 parcel 中读取或写入 writeToParcel(Parcel包裹,int i) 。任何人都可以为我提供一个包含瞬态变量的类实现。谢谢。
【问题讨论】:
标签: java android class parcelable transient
“transient”-关键字对可包裹对象没有影响。读取和写入可包裹对象中的字段没有自动化,因此没有现成的代码可以考虑到这一点。瞬态字段的特殊处理的任何可能选择完全取决于设计类的人。
规范 (https://docs.oracle.com/javase/specs/jls/se7/html/jls-8.html#jls-8.3.1.3) 说“变量可能被标记为瞬态,以表明它们不是对象的持久状态的一部分”,所以如果你真的想照书看书,你应该不要写它们。但是,正如我所说,由于读写是在类内部机械地完成的,transient 关键字没有多大意义。
【讨论】:
class Employee implements Serializable {
private String firstName;
private String lastName;
private transient String confidentialInfo;
//Setters and Getters
}
【讨论】:
您可以在声明变量时简单地在数据类型前添加瞬态关键字。
class Parcel implements Parcelable{
private Integer checkinId;
private transient String someCode;
//// some methods
}
interface Parcelable implements{
// some methods
}
【讨论】: