微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Android Room实体:默认情况下可以忽略字段吗?

如何解决Android Room实体:默认情况下可以忽略字段吗?

认情况下,Room为实体中定义的每个字段创建一列。如果实体具有不想保留的字段,则必须使用@Ignore批注。

这带来了继承问题。在某个时候,注释掉基类中所有不需要的字段变得不可行,尤其是当您必须自己制作复杂股票对象的版本而仅忽略字段时。

当前,我使用接口而不是继承来解决此问题,但我希望为Room对象提供一个基类。

您知道认情况下忽略字段的方法吗,所以我宁愿取消忽略所需字段,也可以采用其他方法?最好在科特林?

编辑: 我想建立一个不同房间实体的树状视图,最好将我的树状视图项目作为所有这些的基类。但是treeview项实现了很多东西,仅针对@Ignore标记自定义所有项是不切实际的。有解决方法,但是如果我这样做,我将需要更少的代码

解决方法

您也可以在基类上使用@Ignore,例如:

open class MyBaseClass{
    @Ignore
    open var somethingBasic: Int = 0
}

@Entity(...)
class A : MyBaseClass{
    var name: String? = null
}

@Entity(...)
class B : MyBaseClass{
    var type: Int = 0
}

但是请注意这一点,因为对不同的表使用基类有点异常,并且可以在某个地方破坏所有表(以迁移为例)。我建议对您的结构进行更深入的了解,并尝试远离:D

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。