Android会议室:@Ignore vs Transient

时间:2017-12-08 16:16:35

标签: android serialization android-room transient

这两个是否可以在Room数据库实体的上下文中互换,或者,如果没有,它们之间有什么区别?

2 个答案:

答案 0 :(得分:15)

task.maxFailures=F是一个特定于房间的注释,说房间应该忽略该字段或方法。

@Ignore是一个Java构造,表示this field should not be serialized in standard Java serializationRoom happens to treat this similarly to @Ignore by default。大多数情况下,如果您从某些类继承而恰好使用transient并且您无法控制该类(例如,它来自库)。

对于您自己的代码,如果您不使用Java序列化,我建议您坚持使用transient字段。 @Ignore不是方法的可用关键字,因此要告诉Room忽略某些构造函数,您别无选择,只能使用transient

答案 1 :(得分:2)

添加到CommonsWare的答案

for root, dirs, files in os.walk(directory): for f in files: files_returned.append(f) 不适合忽略Room的字段,因为CommonsWare会回答。当使用相同的模态从服务器解析数据并存储到数据库中时,它将创建阻止程序。

假设您有一个模态类transient,如下所示

MyModal.java

如果您不想将booleanField保存到数据库中,并且将该字段修改为

  1. public static class MyModal { @SerializedName(“intField”) public int intField; @SerializedName(“strField”) public String strField; @SerializedName(“booleanField”) public boolean booleanField; } :保存到数据库时会忽略此字段,但在解析来自服务器的数据时也会忽略此字段。
  2. transient:它只会在将数据插入数据库时​​忽略此字段,但此字段将参与json解析。