Firebase的setValue()如何为Java中的对象工作?

时间:2013-08-20 16:22:55

标签: java firebase

在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读取字段?

1 个答案:

答案 0 :(得分:6)

文档解释了how this works

  

将此位置的数据设置为给定值。此方法为该值接受的本机类型对应于JSON类型:

     
      
  • Boolean
  •   
  • Long
  •   
  • Double
  •   
  • Map<String, Object>
  •   
  • List<Object>
  •   
     

此外,您可以将自己的类的实例设置到此位置,前提是它们满足以下约束条件:

     
      
  1. 该类必须具有不带参数的默认构造函数
  2.   
  3. 该类必须为要分配的属性定义公共getter。没有公共getter的属性将在反序列化实例时设置为默认值
  4.   

因此,您必须为要保存的所有属性创建getter。在您的示例中,您的firstProperty属性将被写入,但由于您尚未定义默认构造函数,因此无法将其读回。