我在Kotlin中有这个数据类(例子):
import com.google.firebase.database.Exclude
data class User(val name: String = "", @Exclude val age: Int = 0)
而且我不想在firebase中保存年龄属性。 @Exclude应该这样做,但它不起作用,年龄仍然保存。
有没有解决方法?
答案 0 :(得分:36)
在属性上放置@Exclude
会定位其生成的字段,而不是其生成的get accesor方法。要执行后者,您需要在“get:”前加上“Exclude”。 e.g:
data class User(val name: String = "", @get:Exclude val age: Int = 0)
有关详细信息,请参阅Annotation Use-site Targets。
答案 1 :(得分:2)
实际上,您不需要仅添加@get:Exclude
,而是需要所有3个排除项,
@排除@set:排除@get:排除。
我为imageUrl
和providerId
做过
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
)