我是Java初學者。即使經過長時間的嘗試,我也無法理解這些線條。在ArrayList的泛型參數中傳入的類名稱
private ArrayList <Lot> lots;
lots = new ArrayList<Lot>();
任何人都可以描述當一個類名被傳遞給ArrayList<>
參數這是如何工作的?
我是Java初學者。即使經過長時間的嘗試,我也無法理解這些線條。在ArrayList的泛型參數中傳入的類名稱
private ArrayList <Lot> lots;
lots = new ArrayList<Lot>();
任何人都可以描述當一個類名被傳遞給ArrayList<>
參數這是如何工作的?
從Here,
沒有泛型下面的代碼片段需要鑄造:
List list = new ArrayList();
list.add("hello");
String s = (String) list.get(0);
當重新編寫使用泛型,代碼不需要鑄造:
List<String> list = new ArrayList<String>();
list.add("hello");
String s = list.get(0); // no cast
這些是在Java 5中引入的功能generics。
簡而言之,這意味着在lots
每一個元素是一個Lot
- 你不能添加Integer
S或String
s到它,只要你get
從列表中的元素你會得到一個Lot
實例,所以你可以做這樣的事情: lots.get(0).someMethodOfLot();
。
當你做ArrayList <Lot> lots= new ArrayList<Lot>();
它只是意味着你正在創建一個ArrayList,它可以包含一個Lot
類型的對象。
如果您嘗試添加任何其他類型的元素到此列表中,它會給您編譯時錯誤。它有助於在編譯時檢測錯誤並使代碼安全。
該功能由泛型提供。現在的問題是爲什麼我們需要泛型。
Google for「Java generics tutorial」 – 2014-10-11 13:07:12
如果你是初學者,你應該繼續閱讀你的教科書;這將被覆蓋。 (僅供參考,這是* generics *的語法:http://docs.oracle.com/javase/tutorial/java/generics/why.html)。 – 2014-10-11 13:07:53