清单>列表>

清单>列表>,第1张

清单>列表>

区别在于,例如

List<HashMap<String,String>>

是一个

List<? extends Map<String,String>>

但不是

List<Map<String,String>>

所以:

void withWilds( List<? extends Map<String,String>> foo ){}void noWilds( List<Map<String,String>> foo ){}void main( String[] args ){    List<HashMap<String,String>> myMap;    withWilds( myMap ); // Works    noWilds( myMap ); // Compiler error}

可能会认为一个

List
HashMap
S的关系是一个
List
Map
S,但有一个很好的理由,为什么它不是:

假设您可以执行以下 *** 作:

List<HashMap<String,String>> hashMaps = new ArrayList<HashMap<String,String>>();List<Map<String,String>> maps = hashMaps; // Won't compile,         // but imagine that it couldMap<String,String> aMap = Collections.singletonMap("foo","bar"); // Not a HashMapmaps.add( aMap ); // Perfectly legal (adding a Map to a List of Maps)// But maps and hashMaps are the same object, so this should be the same ashashMaps.add( aMap ); // Should be illegal (aMap is not a HashMap)

所以这就是为什么

List
HashMap
不是应该是一个
List
Map
秒。



欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5103721.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-11-17
下一篇 2022-11-17

发表评论

登录后才能评论

评论列表(0条)

保存