Pav*_*lus 11 serialization android transient android-room
这两个是否可以在Room数据库实体的上下文中互换,如果没有,它们之间有什么区别?
Com*_*are 21
@Ignore 是一个特定于房间的注释,说房间应该忽略该字段或方法.
transient是一个Java构造,表示不应在标准Java序列化中序列化此字段.默认情况下,房间碰巧会对此进行类似处理@Ignore.大多数情况下,就是你从一些正在使用的类继承transient并且你不控制那个类的情况(例如,它来自一个库).
对于您自己的代码,如果您不使用Java序列化,我建议您坚持使用@Ignore这些字段.transient不是方法的可用关键字,因此要告诉Room忽略某些构造函数,您别无选择,只能使用它@Ignore.
添加到CommonsWare的答案
transient忽略CommonsWare回答的Room字段不是一个好的选择。当使用相同的模式从服务器解析数据并将其存储到数据库时,它将创建阻止程序。
假设您有一个MyModal.java如下的模态类
public static class MyModal {
@SerializedName(“intField”)
public int intField;
@SerializedName(“strField”)
public String strField;
@SerializedName(“booleanField”)
public boolean booleanField;
}
Run Code Online (Sandbox Code Playgroud)
如果您不想将booleanField保存到数据库中,并且将该字段修改为
transient :保存到数据库时将忽略此字段,但在解析来自服务器的数据时也会忽略此字段。 @Ignore :仅在将数据插入数据库时才会忽略此字段,但是此字段将参与json解析。| 归档时间: |
|
| 查看次数: |
7320 次 |
| 最近记录: |