编译文件时出现了未经检查或不安全的操作,具体是怎么回事?

quickily 2013-02-20 09:51:28
package wyf;
import java.util.*;
class RandomAccessElementArrayListFasterThanLinkedList
{
public static void main(String[] args)
{
long[] timeBegin = new long[2];
long[] timeEnd = new long[2];
Integer[] ia = new Integer[5000];
for (int i = 0; i < 5000; i++)
{
ia[i] = i;
}
int tempi;
Random r = new Random();
List list = new ArrayList(Arrays.asList(ia));
timeBegin[0] = System.currentTimeMillis();
for (int i = 0; i < 100000; i++)
{
tempi = (Integer)list.get(r.nextInt(5000));
}
timeEnd[0] = System.currentTimeMillis();
list = new LinkedList(Arrays.asList(ia));
timeBegin[1] = System.currentTimeMillis();
for (int i = 0; i < 1000000; i++)
{
tempi = (Integer)list.get(r.nextInt(5000));
}
timeEnd[1] = System.currentTimeMillis();
}
}

注意:compare.java使用了未经检查或不安全的操作。
注意:有关详细信息, 请使用 -Xlint:unchecked 重新编译。

百度了,知道是在编译此java源文件时,如果你的jdk是1.5或者以上,会出现“使用了未经检查或不安全的操作;请使用 -Xlint:unchecked 重新编译。”这样的警告,原因是JDK 1.5中集合类的实例创建方式与JDK 1.4的有一些不同,JDK 1.5 里面引入很多新的特性。
问下这具体是哪里出现了问题,应该怎么改
...全文
260 3 打赏 收藏 举报
写回复
3 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
O冬尼O 2013-11-29
用的什么编辑器?
  • 打赏
  • 举报
回复
nmyangym 2013-02-20
加上泛型就补报错了:

class  RandomAccessElementArrayListFasterThanLinkedList{
    public static void main(String[] args){
        long[] timeBegin = new long[2];
        long[] timeEnd = new long[2];
        Integer[] ia = new Integer[5000];
        for (int i = 0; i < 5000; i++){
            ia[i] = i;
        }
        int tempi;
        Random r = new Random();
        //List list = new ArrayList(Arrays.asList(ia));
        List<Integer> list = new ArrayList<Integer>(Arrays.asList(ia));//使用泛型
	timeBegin[0] = System.currentTimeMillis();
        for (int i = 0; i < 100000; i++){
            tempi = list.get(r.nextInt(5000));//使用了泛型,不需要强制转换.
        }
        timeEnd[0] = System.currentTimeMillis();
        //list = new LinkedList(Arrays.asList(ia));
        list = new LinkedList<Integer>(Arrays.asList(ia));//使用泛型
	timeBegin[1] = System.currentTimeMillis();
        for (int i = 0; i < 1000000; i++){
            tempi = list.get(r.nextInt(5000));//使用了泛型,不需要强制转换.
        }
        timeEnd[1] = System.currentTimeMillis();
    }
}
  • 打赏
  • 举报
回复
nmyangym 2013-02-20
就是你没有用泛型!1.5后,容器类都重写了,支持泛型。
  • 打赏
  • 举报
回复
相关推荐
发帖
Java SE

6.2w+

社区成员

Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
帖子事件
创建了帖子
2013-02-20 09:51
社区公告
暂无公告