在Firebase关于lists的文档中,有一个示例,您可以通过setValue()
创建Java对象并将该对象写入Firebase引用,如下所示:
private static class MyObject {
private String property1;
private int property2;
public MyObject(String value1, int value2) {
this.property1 = value1;
this.property2 = value2;
}
public String getFirstProperty() {
return property1;
}
}
private void populateList() {
Firebase ref = new Firebase("https://MyDemo.firebaseIO-demo.com/myObjects");
ref.push().setValue(new MyObject("myString", "7"));
}
这是如何在内部工作的,即当您还没有编写toString()
方法等时,究竟会将哪些值保存到Firebase参考中?更进一步,Firebase客户端是否能够从保存的值中恢复旧对象?怎么样?
是否需要private static
类才能让Firebase读取字段?
答案 0 :(得分:6)
文档解释了how this works:
将此位置的数据设置为给定值。此方法为该值接受的本机类型对应于JSON类型:
Boolean
Long
Double
Map<String, Object>
List<Object>
此外,您可以将自己的类的实例设置到此位置,前提是它们满足以下约束条件:
- 该类必须具有不带参数的默认构造函数
- 该类必须为要分配的属性定义公共getter。没有公共getter的属性将在反序列化实例时设置为默认值
醇>
因此,您必须为要保存的所有属性创建getter。在您的示例中,您的firstProperty
属性将被写入,但由于您尚未定义默认构造函数,因此无法将其读回。