<E>
代碼Collection<E>
有什麼意思?<E>是什麼意思集合<E>?
回答
這是泛型的使用。檢查此intro了。然後不要忘記閱讀tutorial。
摘錄如下(其中使用流延的比較相對於使用泛型):
當看到代碼<類型>,讀它 爲「類型」; 以上的聲明表示爲「字符串c的集合」。使用泛型的 代碼更清晰並且更安全。我們已經消除了不安全的 演員和一些額外的 括號。更重要的是,我們有 搬離其 署名評論的 方法的規範的一部分,所以編譯器可以在編譯時該類型 約束不是在運行時 違反驗證 。由於程序編譯 沒有警告,我們可以確定 確定它不會在運行時拋出 ClassCastException。 使用泛型的效果, 特別是在大型程序中, 改進了可讀性和健壯性。
例如,列表的接口是
public interface List<E> {
void add(E x);
Iterator<E> iterator();
}
這意味着你可以建立,其內容都是相同的顯式類型的(不僅是Object類型)的列表,即使你有自己定義類型。所以,如果你創建一個名稱類,你可以寫
List<Name> nameList = new List<Name>();
,然後用實例名稱填寫,並直接從中檢索名稱實例無需進行轉換或以其他方式不用擔心,因爲您總能獲得無論是名稱實例或null返回,從來沒有一個不同類型的實例。
更重要的是,您不能在這樣的List中插入與Name實例不同的任何東西,因爲它在編譯時會失敗。
nameList.add(false); //Fails!
nameList.add(new Name("John","Smith")); //Succeeds supposing Name has a
//firstName, lastName constructor
我讀`列表
這意味着你正在處理類型爲E
的項目集合。想象一下,你有一杯茶。取而代之的茶,它也可以容納咖啡等,是很有意義的描述杯如一個普通的實體:
class Cup<T> { … }
現在你可以填補它,無論是用咖啡或茶(或別的東西):
Cup<Tea> cuppa = new Cup<Tea>();
Cup<Coffee> foamee = new Cup<Coffee>();
爲了達到此目的,Tea
和Coffee
也需要在程序中定義的類型。
這是一個編譯時限制您的代碼。從(相當無用的)杯子例子回來,集合(數組,列表...)通常包含一個類型的項目,例如,整數或字符串。泛型幫助你用Java表達這個:
Collection<String> strList = new ArrayList<String>();
strList.add("Foobar"); // Works.
strList.add(42); // Compile error!
注意上面的編譯錯誤?您只有在使用泛型時纔會這樣做。下面的代碼也適用,但不會給出漂亮的錯誤信息:
Collection strList = new ArrayList();
strList.add("Foobar"); // Works.
strList.add(42); // Works now. Do we really want this?!
很好的解釋:) – Johanna 2009-06-29 07:04:09
- 1. THREE.Camera.prototype.lookAt</ <() -</ <是什麼意思?
- 2. Php <<<是什麼意思?
- 3. <<什麼意思?
- 4. <<什麼意思?
- 5. <>是什麼意思?
- 6. <>是什麼意思?
- 7. <?=是什麼意思?
- 8. <+>是什麼意思?
- 9. {< >}是什麼意思?
- 10. Ruby中的「<< - 」是什麼意思?
- 11. SBT中`<< =`是什麼意思?
- 12. ASP.NET - <%@和<asp:Panel?是什麼意思?
- 13. C++中的「(」<<「)是什麼意思?
- 14. (x << 13)^ x是什麼意思?
- 15. 「cout <<(_ 1 * 3)」是什麼意思?
- 16. << - 在R中是什麼意思?
- 17. 是什麼!<是什麼意思?
- 18. '<<'是什麼意思?而這個代碼是什麼意思?
- 19. 「1000 << 16」中的「<<」是什麼意思?
- 20. 什麼意思是「:」在<%中:和<%=有什麼區別?
- 21. Bash運算符<<<是什麼意思?
- 22. 什麼是集合<?>
- 23. ANTLR 3,LT!*是什麼意思?
- 24. 是什麼`#((<= \)|?&)。OpenID的\ [^&] +#`的regexp意思?
- 25. 「<xs:sequence />」是什麼意思?
- 26. <meta - data>是什麼意思?
- 27. `Vec <T>`是什麼意思?
- 28. <[email protected]>是什麼意思?
- 29. jQuery。 $('<img/>')是什麼意思?
- 30. <T擴展是什麼意思?
我需要你的幫助,以更好地學習收藏。 – Johanna 2009-06-29 06:21:32