Android 领域-在生成查询时无需硬编码即可访问字段名

Android 领域-在生成查询时无需硬编码即可访问字段名,android,realm,Android,Realm,我正在使用下面的代码片段查询领域,在这里我提供了硬编码的fieldName,我认为这很容易出错。我检查了领域文档(没有结果),但在官方示例()中,它们使用静态字段从查询中访问。考虑到未来字段名的更改等等,我认为这是非常“危险的”。所以,我想知道的是,是否有一个我遗漏的解决方案 实例: override fun getSection(section: Section): RealmResults<Article> { return realm.where(Artic

我正在使用下面的代码片段查询领域,在这里我提供了硬编码的
fieldName
,我认为这很容易出错。我检查了领域文档(没有结果),但在官方示例()中,它们使用静态字段从查询中访问。考虑到未来字段名的更改等等,我认为这是非常“危险的”。所以,我想知道的是,是否有一个我遗漏的解决方案

实例:

 override fun getSection(section: Section): RealmResults<Article> {
         return realm.where(Article::class.java)
         .equalTo("section", 
         ,section.section).findAllAsync()
 }
override fun getSection(section:section):RealmResults{
返回realm.where(Article::class.java)
.equalTo(“第节”,
,section.section)。findAllAsync()
}
我正在努力实现的目标:

 override fun getSection(section: Section): RealmResults<Article> {
        return realm.where(Article::class.java)
        .equalTo(Article.SECTION,  // or ArticleX.SECTION, X being name extension
        ,section.section).findAllAsync()
 }
override fun getSection(section:section):RealmResults{
返回realm.where(Article::class.java)
.equalTo(Article.SECTION,//或ArticleX.SECTION,X是名称扩展名
,section.section)。findAllAsync()
}

您可以查看
RealmFieldNamesHelper
IIRC。不幸的是,它并没有更新为增量注释处理器,但它很有帮助。我不认为构建时间需要几分钟来构建,这值得构建类型安全查询。不幸的是,这是一个附带项目,似乎被搁置了。显然,硬编码是目前的发展方向。我最想知道的是,为什么这样一个库不引入开箱即用的解决方案而削弱了类型安全的重要性?如果你问我的话,这通常只是一个API设计决策错误。Criteria Builder API(虽然不好,但至少它有元模型)和QueryDSL都可以处理创建类型安全路径的能力,通过这些路径可以生成查询,因此这显然不是不可能的。如果您不喜欢自动生成,那么出于同样的目的,我曾经在RealmObject中创建
enum字段{