Firebase @Exclude 与 kotlin 数据类

Posted

技术标签:

【中文标题】Firebase @Exclude 与 kotlin 数据类【英文标题】:Firebase @Exclude with kotlin data class 【发布时间】:2017-02-28 04:47:32 【问题描述】:

我在 Kotlin 中有这个数据类(示例):

import com.google.firebase.database.Exclude

data class User(val name: String = "", @Exclude val age: Int = 0)

而且我不想将 age 属性保存在 firebase 中。 @Exclude 应该这样做,但它不起作用,仍然保存年龄。

有什么解决方法吗?

【问题讨论】:

从我读到的内容应该是一样的,但是在 Exclude 前面加上“field:”有什么不同吗? data class User(val name: String = "", @field:Exclude val age: Int = 0) 不,没有任何区别,但 @get:Exclude 有效(感谢您找到它)。如果您想将其发布为答案,我会接受。 啊,现在你也提到它了。团队合作! 【参考方案1】:

其实你不需要只添加@get:Exclude,但是你需要all 3 Exclude

@Exclude @set:Exclude @get:Exclude.

我是为 imageUrlproviderId 做的

data class FirebaseChatModel(
        @get:PropertyName("message")
        @set:PropertyName("message")
        var message: String = "",
        @get:PropertyName("type")
        @set:PropertyName("type")
        var type: Int = 1,
        @get:PropertyName("senderId")
        @set:PropertyName("senderId")
        var senderId: Int = 0,
        @get:PropertyName("receiverId")
        @set:PropertyName("receiverId")
        var receiverId: Int = 0,
        @Exclude @set:Exclude @get:Exclude var imageUrl: String? = "",
        @Exclude @set:Exclude @get:Exclude var providerId: Int = 0
)

【讨论】:

【参考方案2】:

@Exclude 放置在属性上会针对其生成的字段而不是其生成的获取访问器方法。要执行后者,您需要在“Exclude”前面加上“get:”。例如:

data class User(val name: String = "", @get:Exclude val age: Int = 0)

更多详情请见Annotation Use-site Targets。

【讨论】:

以上是关于Firebase @Exclude 与 kotlin 数据类的主要内容,如果未能解决你的问题,请参考以下文章

在地图上同时显示多个用户的位置(Kotlin、Firebase 实时数据库)

[字体设计欣赏六]澳门设计师Tun Ho & Lua Kot的字体系列

centos 系统备份与还原

android RecyclerView pinch zoom,ScaleGestureDetector&GridLayoutManager,with BigImageViewer,kotli

Linux系统备份与还原

pydantic学习与使用-14.exclude_unset去掉未传值的字段