ClassMapper:aBooleanType没有设置者/字段
我正在使用firebase,这是我的数据类定义:
data class ClaimOrder(val address: String? = null, val amount: Long = 0L, val isProcessed: Boolean = false, val onCreate: kotlin.Any? = ServerValue.TIMESTAMP)
但是在日志中,我看到下面的警告: W/ClassMapper: No setter/field for isProcessed found on class com.guness.bitfarm.service.models.ClaimOrder
我曾尝试@SerializedName("isProcessed")
但没有运气。
我找不到任何来自Firebase的关于getter和setter命名规则的官方文档,但似乎他们正在寻找类似于JavaBean的getters / setter
当您拥有一个名为isProcessed
的属性时,Firebase要求您具有名为getIsProcessed()
/ setIsProcessed()
getter / setter。 但是,当属性开始于Kotlin时,将应用不同的命名规则。 它根据Kotlin doc的规定 , setProcessed()
名为isProcessed()
/ setProcessed()
getter / setter:
如果属性的名称以
is
开头,is
使用不同的名称映射规则:getter的名称将与属性名称相同,并且setter的名称将通过替换set
来获得。 例如,对于属性isOpen
,getter将被称为isOpen()
,setter将被称为setOpen()
。 这个规则适用于任何类型的属性,而不仅仅是Boolean
。
我不知道确切的原因,但这是我的猜测:
变量名称isProcessed
会导致生成不同的访问器方法,因此基础gson
和kotlin
方法不匹配。
然而使用刚processed
似乎很好地解决了问题。