看板 java 關於我們 聯絡資訊
請問「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://www.ptt.cc/bbs/java/M.1446292598.A.08D.html ※ 編輯: ptt10 (36.237.204.87), 10/31/2015 19:58:29
fgh81113: 為何不用ArrayList<ArrayList<Object>> ? 10/31 20:54
有想過,但因為我其實是想要用二維陣列 ArrayList<Object>[][] 因為我要紀錄平面上每個點(x,y)上的多筆資料,想說用二維陣列[x][y]比較直覺。 看來只好把ArrayList<Object>用新物件(NewObject)包起來,然後再NewObject[][]了XD
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>,讓型別宣告明確點,使編譯器不會有警告。
lucky1lk: lists = new ArrayList<Object>[5](); ? 10/31 21:53
lucky1lk: 更正 lists = new ArrayList<Object>[](); 10/31 21:54
這樣好像也不行QQ ============================================================================== 感謝大家回答,後來有找到答案了 請參考本版 #1GFZzSrB (https://www.ptt.cc/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
kurakidream: 要不要自己包個coordinate物件 內含x y 座標 11/01 00:53
kurakidream: 類似ArrayList<Coordiante> list 之類的 11/01 00:53
coldman519: 推樓上 11/01 16:38
adrianshum: 樓上: Map<Coordinate,Data> 比較正常吧? 11/01 23:07
LaPass: 拜託不要用 List Map 亂包東西 orz..... 11/02 13:56
mraaa: 我比較好奇為什麼會需要用到ArrayList的陣列? 12/09 23:37
ptt10: 因為我想要紀錄平面上每個地點(x,y)上的多筆資料。 12/12 22:54
ptt10: 每個地點(x,y)用二維陣列宣告(這樣取值 直接[x][y]比較快) 12/12 22:56
ptt10: 然後每個地點有多筆(數量不定)測量值,想用list存。 12/12 23:00
ptt10: 所以直覺就想用ArrayList<o>[][]。不過後來決定把list包成 12/12 23:02
ptt10: 新物件了,謝大家XD 12/12 23:02