我使用Firestore(来自Firebase)。出于某种原因,我不理解我的一个类的变量没有以正确的名称保存(在Firestore中)。
以下是一个示例类:
data class ExampleClass(
val id: String,
val foo: String,
val bar: String,
val isEnabled: Bool)
当我在Firestore中保存此对象时,我对id
,foo
或bar
没有任何问题。但是,isEnabled
会另存为enabled
。 is
被移除,我没有任何理由。
你们其中一个人知道这是否正常?我想将值保存为isEnabled
而不是enabled
。
此外,是否可以指定"名称"在Firestore中使用每个值?因此我可以强制将该值保存为" isEnabled"。我见过@PropertyName(Firebase doc),但它似乎没有我期望的效果。
提前致谢
答案 0 :(得分:0)
这是正常的,直观的。这是JavaBean类型对象被序列化的方式。根据{{3}}部分8.3.2布尔属性忽略布尔getter的方法名称上的“is”:
布尔属性
另外,对于布尔属性,我们允许a getter方法匹配模式:
public boolean is();
可以提供此“isPropertyName”方法而不是a “get”方法,或者除了a之外还可以提供 “得到”方法。在任何一种情况下,如果是 方法存在于布尔属性然后我们将使用 “是”方法来读取属性值。一个例子 布尔属性可能是:
public boolean isMarsupial();
public void setMarsupial(boolean m);
在我看来,在布尔值上加上“is”前缀是多余的。如果你知道一个属性是一个布尔值,那么暗示它隐含地“是”或“不是”它的名字。
但如果你真的必须更改名称,你可以使用JavaBeans specification注释:
data class ExampleClass(
val id: String,
val foo: String,
val bar: String,
@PropertyName(value="isEnabled")
val isEnabled: Bool
)