所需的注释类型
-
@Retention(RUNTIME) @Target(FIELD) public @interface Required
此注解会将io.realm.RealmList
中的字段或元素标记为不可为空。当类型为
Boolean, Byte, Short, Integer, Long, Float, Double, String, byte[], Date
的字段用Required
注解时,不能将其设置为null
,如果发生这种情况,Realm 将抛出异常。具有基元类型的字段是隐式必需的。 请注意,
String
不是基元类型,因此在 Java 中,除非标记为\@Required
,否则默认为可为 null。 在 Kotlin 中,情况正好相反,因此String
是非空的。 要在 Kotlin 中指定可为 null 的字符串,应使用String?
。如果将此注解用在
RealmList
上,则该注解将应用于列表内的元素,而不是列表本身。 列表本身始终为非空值。 这意味着标有此注解的列表决不允许保存null
值,即使数据类型允许。 如果您尝试将 null 值存储到标记为\@Required
的列表中,Realm 将引发异常。此注解不能用在
RealmAny
上,因为 RealmAny 字段的内部值始终可为 null。 如果您尝试将RealmAny
标记为\@Required
,Realm 会抛出异常。如果将
Required
注解放在包含对其他 Realm 对象的引用的RealmList
中,则编译将失败。