站内搜索: 请输入搜索关键词

当前页面: 开发资料首页J2SE 专题关于一个对象队列排序代码编译警告的问题!

关于一个对象队列排序代码编译警告的问题!

摘要: 关于一个对象队列排序代码编译警告的问题!


为什么下段代码中在编译时始终发出这样的警告:
注意:***使用了未经检查或不安全的操作。
注意:要了解详细信息,请使用 -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 al=new ArrayList();
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);

}
}


我的JDK是1.5的版本


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 al=new ArrayList();
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);

}
}



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


我也不知道了...


Collections.sort(al);
调用的时候需要用instanceof先判断一下是否实现了sort所需要的接口吧,如Comparable

楼主试试,我这没有装1.5


个人觉得取消显示编译器警告并不是一个根本的方法




Collections.sort(al,null);

忍不住自己试了下
原以为上面我说的是对的,谁知道不是;找到public static void sort(List list,
Comparator<? super T> c)说明,给加个参数就好了

“null 值指示应该使用的元素的自然顺序。”


↑返回目录
前一篇: 为什么?static
后一篇: Scanner类问题