从Firebase android检索数据时使用GenericTypeindicator

从Firebase android检索数据时使用GenericTypeindicator,android,firebase,firebase-realtime-database,Android,Firebase,Firebase Realtime Database,我使用以下代码片段从android中的Firebase数据库检索值。代码正在工作,但我不明白如何工作,有人能向我解释为什么我必须使用GenericTypeindicator吗 dbRef.addValueEventListener(){ public void onDataChange(DataSnapshot ds) { GenericTypeIndicator<Map<String, String>> gType = new GenericTypeIn

我使用以下代码片段从android中的Firebase数据库检索值。代码正在工作,但我不明白如何工作,有人能向我解释为什么我必须使用GenericTypeindicator吗

dbRef.addValueEventListener(){
   public void onDataChange(DataSnapshot ds) {
     GenericTypeIndicator<Map<String, String>> gType = new GenericTypeIndicator<Map<String, String>>() {
     };
     Map<String, String> myMap = ds.getValue(gType);
   }
}
dbRef.addValueEventListener(){
公共无效onDataChange(DataSnapshot ds){
GenericTypeIndicator gType=新的GenericTypeIndicator(){
};
Map myMap=ds.getValue(gType);
}
}

任何帮助都将不胜感激:)

本课程的文档很好地解释了为什么要使用它

由于Java实现泛型(类型擦除)的方式,有必要使用稍微复杂一点的方法在运行时正确解析泛型集合的类型。为了解决此问题,Firebase在调用getValue(DataSnapshot.getValue(GenericTypeIndicator)、MutableData.getValue(GenericTypeIndicator))时接受此类的子类,并返回正确类型的泛型集合