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

时间:2018-08-21 04:15:05

标签: java firebase google-cloud-firestore

在Firebase Realtime数据库中,支持使用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,它存在于实时数据库软件包中。任何解决方法?或将事情做好的事情会很棒。

MyClass与此类似

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

1 个答案:

答案 0 :(得分:2)

这里是有关问题和解决方法的讨论: https://github.com/firebase/firebase-android-sdk/issues/222

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

class MyNonGeneric extends MyClass<R> {}

// Usage
snapshot.toObject(MyNonGeneric.class);

或者需要分别获取POJO的每个顶级属性并将其强制转换。