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


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

最佳答案

该类的文档在解释为什么必须使用它方面做得很好。

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


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

07-26 07:20