为什么在会议室中需要两个构造函数?

时间:2018-09-05 05:01:47

标签: android database constructor android-room

一个带有ID,另一个没有。另外,为什么不能删除构造函数?为什么必须改为指定@Ignore?先感谢您。

我指的是实体。这是我指的代码和网址。

@Entity(primaryKeys={"id", "versionCode"})
class VersionedThingy {
  @NonNull public final String id;
  public final int versionCode;

  @Ignore
  private String something;

  VersionedThingy(String id, int versionCode) {
    this.id=id;
    this.versionCode=versionCode;
  }
}

https://commonsware.com/AndroidArch/previews/the-dao-of-entities

1 个答案:

答案 0 :(得分:0)

您可以在这里查看文档:{​​{3}},其中说:

  

每个实体必须具有无参数构造函数,或者其参数匹配字段(基于类型和名称)的构造函数。构造函数不必将所有字段都作为参数来接收,但是如果没有将字段传递给构造函数,则它应该是公共的或具有公共的setter。如果有匹配的构造函数可用,Room将始终使用它。如果您不希望它使用构造函数,则可以使用“忽略”对其进行注释。

     

将一个类标记为实体时,其所有字段都将保留。   如果您想排除其某些字段,可以对其进行标记   忽略。

     

如果一个字段是瞬态的,除非它是   带有ColumnInfo,Embedded或Relation的注释。

因此,您只能使用一个构造函数,具体取决于Database

中需要的字段

希望我有所帮助:)