作者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/cn.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/cn.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