[問題] 請問ArrayList<E>[]陣列 怎樣new才正確?
請問「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
→
10/31 20:54, , 1F
10/31 20:54, 1F
有想過,但因為我其實是想要用二維陣列 ArrayList<Object>[][]
因為我要紀錄平面上每個點(x,y)上的多筆資料,想說用二維陣列[x][y]比較直覺。
看來只好把ArrayList<Object>用新物件(NewObject)包起來,然後再NewObject[][]了XD
→
10/31 21:34, , 2F
10/31 21:34, 2F
錯誤訊息是:Type safety: The expression of type ArrayList[] needs unchecked
conversion to conform to ArrayList<Object>[]
想說應該是我 lists = new ArrayList[5]; 沒加<Object>,所以想問問要怎樣寫,
看怎樣加上<Object>,讓型別宣告明確點,使編譯器不會有警告。
→
10/31 21:53, , 3F
10/31 21:53, 3F
→
10/31 21:54, , 4F
10/31 21:54, 4F
這樣好像也不行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
→
11/01 00:53, , 5F
11/01 00:53, 5F
→
11/01 00:53, , 6F
11/01 00:53, 6F
推
11/01 16:38, , 7F
11/01 16:38, 7F
→
11/01 23:07, , 8F
11/01 23:07, 8F
推
11/02 13:56, , 9F
11/02 13:56, 9F
推
12/09 23:37, , 10F
12/09 23:37, 10F
→
12/12 22:54, , 11F
12/12 22:54, 11F
→
12/12 22:56, , 12F
12/12 22:56, 12F
→
12/12 23:00, , 13F
12/12 23:00, 13F
→
12/12 23:02, , 14F
12/12 23:02, 14F
→
12/12 23:02, , 15F
12/12 23:02, 15F
java 近期熱門文章
PTT數位生活區 即時熱門文章