为什么要这么设计(看了SimpleExpandableListAdapter.java源代码的疑问)?
它的构造函数接受一个 List<? extends Map<String, ?>> groupData 类型的参数。
但在使用这个参数的时候,却是这样的:
v.setText((String)data.get(from[i])); //data就是 List 里面的 Map<String, ?>
开始没看源代码,我一看这参数,觉得SimpleExpandableListAdapter好神奇,大家都知道
Map<String, ?> 里面的问号可以是其它任何从Object继承的类型,那么我非常想知道,它是如何做到支持任何类型的呢?
没想到一看源代码,原来是强转!!!
那么,为什么不接受 List<? extends Map<String, String>> 类型呢?这样我一看就知道应该怎么传入参数了,可它却是一个问号,那么我完全有可能传入一个 List<? extends Map<String, Integer>> 类型变量,会怎样呢?(崩溃,我试过了)
我想知道这样设计是为什么,有什么好处?