尽管String实现了CharSequence,但Java不允许这样做。这个设计决定的原因是什么?为什么我不能将HashMap <CharSequence,CharSequence>设置为HashMap <String,String>
4
A
回答
6
来禁止该决定是因为它不是类型安全:
public class MyEvilCharSequence implements CharSequence
{
// Code here
}
HashMap<CharSequence, CharSequence> map = new HashMap<String, String>();
map.put(new MyEvilCharSequence(), new MyEvilCharSequence());
现在我试图把MyEvilCharSequence
成String
地图。大问题,因为MyEvilCharSequence
最肯定是而不是 a String
。
但是,如果你说:
HashMap<? extends CharSequence, ? extends CharSequence> map = new HashMap<String, String>();
那么这样的作品,因为编译器会阻止您添加非null
项目到地图。这条线会产生一个编译时错误:
// Won't compile with the "? extends" map.
map.put(new MyEvilCharSequence(), new MyEvilCharSequence());
See here对通用通配符的更多细节。
2
应该HashMap<? extends CharSequence, ? extends CharSequence>
相关问题
- 1. 为什么HashMap <String,Object>不接受HashMap <String,List>实例?
- 2. 为什么我们必须将HashMap <String,Object>转换为HashMap <String,Object> .toMap
- 3. Javapoet - TypeName - HashMap <String,HashMap <String,List <String> >> generation?
- 4. Map <String,Map <String,Boolean >> myMap = new HashMap <String,HashMap <String,Boolean >>();
- 5. 如何将HashMap <String,Integer> param转换为Map <String,Object)
- 6. Android将ArrayList <HashMap <String,String >> mylist转换为stringarray
- 7. 如何将List <NameValuePair>转换为hashMap <String,String>?
- 8. 为什么地图<String, int> list = new HashMap <String, int>不允许?
- 9. 的Java设置<String>一个HashMap
- 10. 在ArrayAdapter中设置ArrayList <HashMap <String,String >>
- 11. 如何在AlertDialog中设置ArrayList <HashMap <String,String >>?
- 12. XStream with HashMap <String,String>
- 13. 加载数据到HashMap <String,HashMap <String,HashMap <String,ArrayList <ClassOb> >>>
- 14. 迭代HashMap <String,HashMap <String,Integer >>
- 15. 从ArrayList中获取元素<HashMap <String,HashMap <String,String >>>
- 16. Android ArrayList <HashMap <String,String >>
- 17. 将ArrayList <HashMap <String,String >>附加到另一个ArrayList <HashMap <String,String >>
- 18. 将HashMap <String,String>绑定到MutableTreeNode
- 19. 构造函数ArrayAdapter <ArrayList <HashMap <String,String >>>(Context,int,ArrayList <HashMap <String,String >>)未定义
- 20. HashMap <String,String> temp = new HashMap <String,String>();对于通图像
- 21. 如何正确联合HashMap <String,ArrayList <Object>>和HashMap <String,Object>
- 22. Java:如何将HashMap <String,HashMap <Integer,ArrayList <Integer> >>写入文件?
- 23. Proguard和HashMap <String,MyObject>
- 24. JSP访问中的HashMap <HashMap <Integer,Integer>,String>
- 25. HashMap <String,ArrayList <Objects>>
- 26. set ArrayList <HashMap <String,Object>> value
- 27. 遍历HashMap <String,List <Class>>
- 28. 如何将Json字符串转换为List <HashMap <String,String >>?
- 29. 如何将HashMap <String,列表<String[]>>转换为GWT中的Tree?
- 30. 如何将List <HashMap <String,String >>保存到SQLite db
http://stackoverflow.com/questions/7098402/implementations-and-collections/7098461#7098461的 –
可能重复[任何简单的方式来解释为什么我不能做列表动物=新的ArrayList ()?( http://stackoverflow.com/questions/2346763/any-simple-way-to-explain-why-i-cannot-do-listanimal-animals-new-arraylistdo) –