作者ptt10 (路人)
看板java
標題[問題] 請問ArrayList<E>[]陣列 怎樣new才正確?
時間Sat Oct 31 19:56:34 2015
請問「ArrayList<Object>[] lists;」要怎樣初始化?
public void method(){
ArrayList<Object>[] lists;
// lists = new ArrayList<Object>[5]; //錯誤
// lists = new ArrayList<Object>()[5]; //錯誤
// lists = new ArrayList[5]<Object>; //錯誤
// lists = new ArrayList[5]<Object>(); //錯誤
lists = new ArrayList[5]; //會有黃色警告
}
↓這樣雖然不會有警告,但多了「@SuppressWarnings("unchecked")」感覺有點礙眼。
@SuppressWarnings("unchecked")
public void method(){
ArrayList<Object>[] lists;
lists = new ArrayList[5];
}
請問ArrayList的陣列的初始化,到底要怎樣寫才最正確(也不會有警告)呢?
謝謝!
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 36.237.204.87
※ 文章網址: https://webptt.com/m.aspx?n=bbs/java/M.1446292598.A.08D.html
※ 編輯: ptt10 (36.237.204.87), 10/31/2015 19:58:29
1F:→ fgh81113: 為何不用ArrayList<ArrayList<Object>> ? 10/31 20:54
有想過,但因為我其實是想要用二維陣列 ArrayList<Object>[][]
因為我要紀錄平面上每個點(x,y)上的多筆資料,想說用二維陣列[x][y]比較直覺。
看來只好把ArrayList<Object>用新物件(NewObject)包起來,然後再NewObject[][]了XD
2F:→ Aztecs: 你有認真看過錯誤訊息嗎? 10/31 21:34
錯誤訊息是:Type safety: The expression of type ArrayList[] needs unchecked
conversion to conform to ArrayList<Object>[]
想說應該是我 lists = new ArrayList[5]; 沒加<Object>,所以想問問要怎樣寫,
看怎樣加上<Object>,讓型別宣告明確點,使編譯器不會有警告。
3F:→ lucky1lk: lists = new ArrayList<Object>[5](); ? 10/31 21:53
4F:→ lucky1lk: 更正 lists = new ArrayList<Object>[](); 10/31 21:54
這樣好像也不行QQ
==============================================================================
感謝大家回答,後來有找到答案了
請參考本版
#1GFZzSrB (
https://webptt.com/m.aspx?n=bbs/java/M.1346256732.A.D4B.html)
→ sbrhsieh:compiler 沒有不准這麼寫,只是囉唆一點,提醒要注意。
→ awert:只能用非type-safe的方式建,否則compiler是不會過的
「這算是 Java 為了 generic 而導致出的一個大缺陷吧,而且不太直覺。」
看來ArrayList宣告成陣列,一定會有警告訊息@@
只好很麻煩的把ArrayList<Object>包起來了
再次謝謝大家幫忙XD
※ 編輯: ptt10 (36.237.204.87), 10/31/2015 23:57:05
5F:→ kurakidream: 要不要自己包個coordinate物件 內含x y 座標 11/01 00:53
6F:→ kurakidream: 類似ArrayList<Coordiante> list 之類的 11/01 00:53
7F:推 coldman519: 推樓上 11/01 16:38
8F:→ adrianshum: 樓上: Map<Coordinate,Data> 比較正常吧? 11/01 23:07
9F:推 LaPass: 拜託不要用 List Map 亂包東西 orz..... 11/02 13:56
10F:推 mraaa: 我比較好奇為什麼會需要用到ArrayList的陣列? 12/09 23:37
11F:→ ptt10: 因為我想要紀錄平面上每個地點(x,y)上的多筆資料。 12/12 22:54
12F:→ ptt10: 每個地點(x,y)用二維陣列宣告(這樣取值 直接[x][y]比較快) 12/12 22:56
13F:→ ptt10: 然後每個地點有多筆(數量不定)測量值,想用list存。 12/12 23:00
14F:→ ptt10: 所以直覺就想用ArrayList<o>[][]。不過後來決定把list包成 12/12 23:02
15F:→ ptt10: 新物件了,謝大家XD 12/12 23:02