为什么下段代码中在编译时始终发出这样的警告:
注意:***使用了未经检查或不安全的操作。
注意:要了解详细信息,请使用 -Xlint:unchecked 重新编译。
虽然编译后可以执行但看见警告就不爽~!
请告诉我是怎么会事啊?import java.util.*;class Students implements Comparable
{
int number;
String name;
Students(int number,String name)
{
this.number=number;
this.name=name;
}
public int compareTo(Object o)
{
Students st=(Students)o;
return number > st.number ? 1 : (number==st.number ? 0 : -1); 
}
public String toString()
{
return "This students information is number :"+number+" name :"+name;
}
}class CollectionsTest
{
public static void printElement(Collection c)
{
Iterator it=c.iterator();
while(it.hasNext())
{
System.out.println(it.next());
}
}
public static void main(String[] args)
{
ArrayList<Students> al=new ArrayList<Students>();
Students st1=new Students(2,"Vida");
Students st2=new Students(3,"Lillian");
Students st3=new Students(1,"Chaner");
al.add(st1);
al.add(st2);
al.add(st3);
Object[] a = al.toArray();
        Arrays.sort(a);
            
    for(Object o:a)
    System.out.println(o);
Collections.sort(al);
printElement(al);

}
}

解决方案 »

  1.   

    import java.util.*;class A implements Comparable
    {
    int number;
    String name;
    A(int number,String name)
    {
    this.number=number;
    this.name=name;
    }
    public int compareTo(Object o)
    {
    A st=(A)o;
    return number > st.number ? 1 : (number==st.number ? 0 : -1); 
    }
    public String toString()
    {
    return "This students information is number :"+number+" name :"+name;
    }
    }class CollectionsTest
    {
    public static void printElement(Collection c)
    {
    Iterator it=c.iterator();
    while(it.hasNext())
    {
    System.out.println(it.next());
    }
    }
    @SuppressWarnings("unchecked")
    public static void main(String[] args)
    {
    ArrayList<A> al=new ArrayList<A>();
    A st1=new A(2,"Vida");
    A st2=new A(3,"Lillian");
    A st3=new A(1,"Chaner");
    al.add(st1);
    al.add(st2);
    al.add(st3);
    Object[] a = al.toArray();
            Arrays.sort(a);
                
        for(Object o:a)
        System.out.println(o);
    Collections.sort(al);
    printElement(al);}
    }
      

  2.   

    必须通过添加注释@SuppressWarnings("unchecked")来解决吗?
      

  3.   

    Collections.sort(al);
    调用的时候需要用instanceof先判断一下是否实现了sort所需要的接口吧,如Comparable楼主试试,我这没有装1.5
      

  4.   

    Collections.sort(al,null);忍不住自己试了下
    原以为上面我说的是对的,谁知道不是;找到public static <T> void sort(List<T> list,
                                Comparator<? super T> c)说明,给加个参数就好了“null 值指示应该使用的元素的自然顺序。”