如何在 Firebase 实时数据库中使用 ArrayLists 存储自定义 java 对象

How to store custom java objects with ArrayLists in Firebase realtime database

我正在尝试在 Firebase 中存储自定义 java 对象。这些对象内部有 ArrayLists 和其他对象引用,例如 Location。当我尝试将这些对象写入数据库时​​,AndroidStudio 给出了两个错误:

  1. CustomClassMapper.convertToPlainJavaTypes
  2. CustomClassMapper.serialize.

我了解到这些问题是由于 Firebase 仅支持 java 具有默认构造函数、public getter 和实现 Serializible 的对象。

而且(不确定)对象本身不应引用除 Firebase 支持的数据类型以外的任何内容,这些数据类型是 String, Long Double, Boolean, Map<String, Object>, List<Object>.

但是在我的项目中,我的对象必须有 ArrayList<Location> 引用。任何帮助将不胜感激。

想通了。我有一个叫做 Route 的对象。它还有一个包含 Stop 对象的列表。将停靠点添加到路线时,路线的引用也将添加到停靠点以表明该特定停靠点存在于该路线中。但是,出于某种原因,将 Route(this) 引用添加到 Stop 并将 Stop 添加到 Route(this) 会使应用程序崩溃。我认为这是由于数据库持有对象本身的副本而不是引用,如果允许的话将导致无限对象。

解决方案:检查对象之间是否有交叉引用。