将 .toObject 与 Firestore 中的泛型类一起使用,从 DocumentSnapshot 获取 POJO



在Firebase Realtime Database中,支持使用GenericTypeIndicator反序列化对象。有人可以阐明如何对 Firestore 做同样的事情吗?

我有一个文档快照,我想将其转换为参数化的 POJO。

这是我尝试这样做时抛出的错误

java.lang.RuntimeException: Could not deserialize object. Class com.thesportsbeing.thesportsbeing.screens.festadmin.eventslist.eventadmin.scoring.MatchScore has generic type parameters, please use GenericTypeIndicator instead. 

问题是Firestore包中没有GenericTypeIndicator,它存在于实时数据库包中。任何解决方法?或者做一些事情会很棒。

我的类与此类似

public class MyClass<R extends SomeAbstractClass> {
R someClassWhichExtendsAboveAbstractClass;
}

以下是对此问题和解决方法的讨论: https://github.com/firebase/firebase-android-sdk/issues/222

最简单的方法是声明泛型类的子类:

class MyNonGeneric extends MyClass<R> {}
// Usage
snapshot.toObject(MyNonGeneric.class);

或者需要单独获取 POJO 的每个顶级属性并强制转换它。

相关内容

  • 没有找到相关文章

最新更新