5

在 Firebase 关于lists的文档中,有一个示例,您可以创建一个 Java 对象并将该对象写入 Firebase 引用,setValue()如下所示:

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 可以读取这些字段?

4

1 回答 1

6

该文档解释了这是如何工作的:

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

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

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

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

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

于 2013-08-20T16:39:14.433 回答