儘管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. Android將ArrayList <HashMap <String,String >> mylist轉換爲stringarray
- 6. 如何將HashMap <String,Integer> param轉換爲Map <String,Object)
- 7. 爲什麼地圖<String, int> list = new HashMap <String, int>不允許?
- 8. 如何在AlertDialog中設置ArrayList <HashMap <String,String >>?
- 9. 迭代HashMap <String,HashMap <String,Integer >>
- 10. HashMap <String,String> temp = new HashMap <String,String>();對於通圖像
- 11. 如何正確聯合HashMap <String,ArrayList <Object>>和HashMap <String,Object>
- 12. Java:如何將HashMap <String,HashMap <Integer,ArrayList <Integer> >>寫入文件?
- 13. Proguard和HashMap <String,MyObject>
- 14. HashMap <String,ArrayList <Objects>>
- 15. 如何將Json字符串轉換爲List <HashMap <String,String >>?
- 16. 如何聲明HashMap <String,ArrayList <ArrayList <String> >>?
- 17. 如何保存HashMap <String,String>?
- 18. 有沒有更好的方法來實現HashMap <String,List <HashMap <String,List <Details> >>>?
- 19. 無法將人員轉換爲HashMap <String,Person>
- 20. 如何將hashmap <string,hashmap <string,string >>傳遞給一個簡單的適配器?
- 21. 爲什麼不能HashMap的<整數,ArrayList的<Integer>>轉換爲HashMap的<整數,列表<Integer>>
- 22. ArrayList <HashMap <String,String >>無法正確轉換爲API9的JSONArray
- 23. 爲什麼通常地圖<X, X> =新的HashMap <X, X>()而不是HashMap <X, X> = new HashMap <X, X>()?
- 24. ArrayList <String> to CharSequence []
- 25. 如何將HashMap <Integer,ArrayList <String>>存儲到SQLite?
- 26. 從Arraylist填充ListView <HashMap <String,String >>
- 27. 從ArrayList中取值<HashMap <String,String >>
- 28. 傳遞ArrayList <HashMap <String,String >>到一個片段
- 29. ArrayList <HashMap <String,String>使用雲端點?
- 30. ArrayList <HashMap <String,String >>沒有值
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) –