Firebase 为什么dataSnapshot在ViewModel中反序列化,而不是在扩展LiveData的类中?

Firebase 为什么dataSnapshot在ViewModel中反序列化,而不是在扩展LiveData的类中?,firebase,firebase-realtime-database,viewmodel,android-livedata,Firebase,Firebase Realtime Database,Viewmodel,Android Livedata,我读了道格·史蒂文森写的这些博文。在第二部分,他说 实时数据库SDK使将DataSnapshot转换为JavaBean样式的对象变得非常容易 并提到我们可以使用这行代码将DataSnapshot反序列化到HotStock对象(JavaBean类)中 HotStock stock=dataSnapshot.getValue(HotStock.class) 我很困惑,因为他首先使用Transformation.map,然后他说如果LiveData转换很昂贵,我们可以从ViewModel创建一个Med

我读了道格·史蒂文森写的这些博文。在第二部分,他说

实时数据库SDK使将DataSnapshot转换为JavaBean样式的对象变得非常容易

并提到我们可以使用这行代码将DataSnapshot反序列化到HotStock对象(JavaBean类)中

HotStock stock=dataSnapshot.getValue(HotStock.class)

我很困惑,因为他首先使用Transformation.map,然后他说如果LiveData转换很昂贵,我们可以从ViewModel创建一个MediatorLiveData对象,将DataSnapshot转换为HotStock对象

我的问题是:为什么我们不能打电话给

HotStock stock=dataSnapshot.getValue(HotStock.class)


从ValueEventListener上的onDataChange()方法开始,该方法位于扩展LiveData超类的类中,然后只需使用setValue()方法将HotStock对象直接传递给ViewModel,然后传递给观察LiveData更改的活动或片段?

您可以这样做,
但getValue()
传递类对象实际上有点慢(特别是第一次,对于特定的类),因为SDK必须使用反射来确定如何将所有字段映射到它创建的对象中。但你想用什么取决于你自己