java中用到ArrayList.sort()为什么会出现“使用了未经检查或不安全的操作”的提示?求高手解答

import java.util.*;
class ArrayListTest
{
public static void printElements(Collection c)
{
Iterator it=c.iterator();
while(it.hasNext())
{
System.out.println(it.next());
}
}
public static void main(String[] args)
{
Student s1=new Student(2,"zhangsan");
Student s2=new Student(1,"lisi");
Student s3=new Student(3,"wangwu");
ArrayList<Student> al=new ArrayList<Student>();
al.add(s1);
al.add(s2);
al.add(s3);
Collections.sort(al);//提示使用了未经检查或不安全的操作
printElements(al);
}
}
class Student implements Comparable
{
int num;
String name;
Student(int num,String name)
{
this.num=num;
this.name=name;
}
public int compareTo(Object o)
{
Student s=(Student)o;
return num>s.num?1:(num==s.num?0:-1);
}
public String toString()
{
return num+":"+name;
}
}

存在类型匹配隐患,在个人用一般没问题,自己能确认类型无误,在main()上面加@SuppressWarnings("unchecked")就行

要是给别人用或者教常用和可能以后需要扩展,还是改了好。
1,.Student类的定义改为class Student implements Comparable<Student>

2.类中的方法改为
public int compareTo(Student s) {
return num > s.num ? 1 : (num == s.num ? 0 : -1);
}
温馨提示:内容为网友见解,仅供参考
第1个回答  2013-04-09
Student 这个对象需要序列化吧。
第2个回答  2013-04-09
不是什么错误,警告而已。
没问题,不用处理的。

java中用到ArrayList.sort()为什么会出现“使用了未经检查或不安全的...
存在类型匹配隐患,在个人用一般没问题,自己能确认类型无误,在main()上面加@SuppressWarnings("unchecked")就行 要是给别人用或者教常用和可能以后需要扩展,还是改了好。1,.Student类的定义改为class Student implements Comparable<Student> 2.类中的方法改为 public int compareTo(Student s) { ret...

java 使用了未经检查或不安全的操作
未经检查或不安全的操作,是因为你使用列表时没有使用泛型,这不是错误,只是警告,不影响使用,如果你使用泛型就不报那个警告了 假如你的list里将来放的都是String,那么在定义时可以这样 List<String> list=new ArrayList<String>();这样就只能存放String了,不能存放其它类型 我们真正使用list时,大部...

提示使用了未经检查或不安全的操作,为什么会出现这个提示?
ArrayList<Integer> arr=new ArrayList<Integer> 这样定义

java问题:使用了未经检查或不安全的操作。运行的时候出现如图所示的提示...
这是JDK1.5的警告,JDK1.5增加了对泛型的支持,它会对集合里面的数据进行类型检查。如果你在使用泛型的时候没有指定类型信息(List<your Object> list = new ArrayList<your Object>();其中,“your Object”即类型信息),则无法检查给出的参数是否合乎要求,就会出现unchecked警告,这并不影响运行...

java编译说使用了未经检查或者不安全的操作
首先:java中未经检查或者不安全的操作并不是错误!!!完全可以忽视,不像看到这个的话,在class定义的前面一行加上@SuppressWarnings("unchecked")然后把,我猜是你的ArrayList这里出的问题,ArrayList相当于一个容器,jdk1.5以后再定义容器的时候要加上泛型,如果你装的是String的话,可以改成ArrayList<...

如何解决Java问题: 使用了未经检查或不安全的操作。有关详细信息, 请...
这是一个警告的JDK1.5,JDK1.5增加了对泛型的支持,这将有一个集合里面的数据类型检查。如果你使用泛型时,没有指定的信息类型(名单<your对象>列表=新的ArrayList <你的对象>的(),其中,“对象”类型的信息),你可以不检查给定的参数遵守的要求出现unchecked警告,这并不影响程序的运行。

java关于使用了未经检查或者不安全的操作
你可以这样定义:Collection<String> c = new ArrayList<String>();表示这个集合里面的元素都为String类型,以后取出来也不需要做类型转换,例如String p=c.next();就可以了。当然不用泛型也可以,你只需要在定义这个集合的类里面加上: @SuppressWarnings("unchecked")就可以了 ...

使用了未经检查或不安全的操作
因为你使用了容器,却没有用泛型,就会出现上述情况,没关系,不是什么错误 你可以加上泛型 import java.util.*;public class EnhancedFor { public static void main(String[] args) { int[] arry = ;for(int i : arry) { System.out.println(i);} List<String> c = new ArrayList<String>(...

...Test.java使用了未经检查或不安全的操作 注意:要了解详细信息,请使 ...
在jre1.6的环境中,范型的使用都会报类似警告 即支持范型的容器应该定义范型类型然后再使用,或者,在方法前加一个忽略注释:1、ArrayList<String> al=new ArrayList<String>();2、方法前加入@SuppressWarnings("unchecked")

...java 使用了未经检查或不安全的操作。”提示
是因为程序里面有泛型没有指名是那种类型,所以认为不安全的。但是自己知道就是了。没事的。执行就是了。比如(不指明存放类型在eclipse编辑器中显示一些黄色波浪线提示。)\/\/不指明 list存放的类型 List list = new ArrayList();list.add("a");String a = (String)list.get(0);\/\/指名存放类型 ...

相似回答