从Firebase android检索数据时使用GenericTypeindicator

时间:2017-04-20 12:31:09

标签: android firebase firebase-realtime-database

我正在使用以下代码段从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);
   }
}

任何帮助都会得到赞赏:)

1 个答案:

答案 0 :(得分:3)

该课程的文档非常适合解释为什么必须使用它。

https://www.firebase.com/docs/java-api/javadoc/com/firebase/client/GenericTypeIndicator.html

  

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