List listOne = new LinkedList<Shxx>();
List<Shxx> listTwo = new LinkedList<Shxx>();
List listThree = new LinkedList();
List<Shxx> listFour = new LinkedList();
回答
List listOne = new LinkedList<Shxx>();
丟掉類型信息,不妨使用泛型。
List<Shxx> listTwo = new LinkedList<Shxx>();
正確使用泛型,提供類型安全。
List listThree = new LinkedList();
沒有使用泛型(即預Java 5代碼),沒有類型安全。
List<Shxx> listFour = new LinkedList();
將導致編譯器警告,但否則可以,因爲該列表只能通過類型安全引用使用,並且最初爲空。不應該做任何事情,因爲如果你忽略關於使用原始類型的編譯器警告,那麼你也可能會忽略那些與此不一樣的其他人。從泛型中獲得最大類型安全的最好方法是消除所有相關的編譯器警告。
偉大但你的意思是什麼「可能」?在第一點,你的意思是插入的元素將像對象類型的句柄? – MineIsMine 2010-10-13 09:04:17
請:這是'你',而不是'你'。 – 2010-10-13 09:11:27
對不起原諒我的這個錯誤 – MineIsMine 2010-10-13 09:18:20
listOne
和listThree
將只在代碼對象(additionnally,您的IDE可能會顯示這兩個警告,由於listOne
instanciation意味着一個未經檢查中使用的檢查收集的,而listThree
instanciation是原料使用的清單可用什麼應該是一個檢查收集)。
對於這兩個列表,您將能夠添加任何類型的對象(String
作爲原型示例)。
listTwo
被宣稱爲Shxx
的經典List
。
對於此列表,編譯器將只允許您添加Shxx
類型的項目。
的listFour
編譯宣言,使作爲Shxx
一個List
列表可用(如listTwo
)(但我不會這樣的推薦寫)。
最後,雖然這些列表在您的聲明代碼中不會以相同的方式使用,但您必須知道它們在運行時都是相同的(但您在理論上無法克服這些泛型限制很久以前)。
@聲明listFour編譯對我來說很好。 – 2010-10-13 08:54:37
@Michael_Borgwardt mmh,是的,你是的,對,我會相應地改變我的答案 – Riduidel 2010-10-13 09:06:26
謝謝>>>>>它與我合作。 – MineIsMine 2010-10-13 09:22:48
- 1. 這兩個聲明有什麼區別?
- 2. 這兩個聲明有什麼區別?
- 3. 這兩個聲明有什麼區別?
- 4. 這兩個聲明有什麼區別?
- 5. 這兩個聲明有什麼區別?
- 6. 這兩個聲明有什麼區別?
- 7. Array聲明和Collection聲明之間有什麼區別
- 8. Tensorflow:聲明一個變量與tf.Variable和直接聲明有什麼區別?
- 9. 聲明Stream與try-with-resources聲明之間有什麼區別?
- 10. List聲明有什麼區別?
- 11. 這些#import聲明有什麼區別?
- 12. 同時聲明多個外鍵或單獨聲明它們有什麼區別?
- 13. 聲明一個String並將其聲明爲final有什麼區別?
- 14. XML中的「處理指令」和「聲明性聲明」之間有什麼區別?
- 15. PHP每個和靜態數組聲明
- 16. 區別有兩個參數,一個參數模板兩個聲明每個
- 17. 這兩個綁定聲明與Google Guice有什麼區別?
- 18. 這兩個函數聲明在JavaScript中有什麼區別?
- 19. 這兩個聲明在c中有什麼區別?
- 20. 這兩個聲明在反應JavaScript之間有什麼區別?
- 21. 下面兩個聲明有什麼區別?
- 22. 這兩個聲明有什麼區別嗎?
- 23. 這兩個C聲明有什麼區別?
- 24. Python中這兩個數組聲明有什麼區別?
- 25. 這兩個函數指針聲明有什麼區別?
- 26. 這兩個類聲明有什麼區別?
- 27. 這三個委託聲明有什麼區別?
- 28. C - 這兩個結構聲明有什麼區別?
- 29. javascript的3個對象聲明有什麼區別
- 30. 這兩個對象的聲明有什麼區別?
簡短的回答:使用第二個版本,丟棄其餘的 – 2010-10-13 08:51:02