有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java不能为@Required或@NotNull

在Android开发中使用REALM的版本4.3.3时,我遇到以下错误:

Error: Field "groupName" with type "pizware.evaluapp.Models.Group" can not be @Required or @NotNull.

但我不会对任何字段使用这些标签中的任何一个。有人知道发生了什么事吗


共 (1) 个答案

  1. # 1 楼答案

    当您使用Kotlin时,领域会检查字段的可空性

    比如

    class Blah: RealmObject() {
        var group: Group? = null
    }
    

    然后group不会得到隐式的@Required注释

    但如果你这么做了

    class Blah: RealmObject() {
        var group: Group = Group()
    }
    

    这是行不通的,因为Realm不能保证单个链接的非空性。所以它会抛出你得到的错误

    如果您想忽略这一点,例如,您正在创建一个避免返回空值的支持字段

    get() = group ?: Group()
    

    然后您可以使用(从4.1.0开始):

    kapt {
      arguments {
        arg("realm.ignoreKotlinNullability", true)
      }
    }
    

    在这种情况下,Realm不会尝试隐式地处理您的可空性(并将Kotlin的可空性映射到字段的@Required)。但只有当你真正知道自己在做什么时,你才应该使用这个