关于未经检查或不安全的操作

庚武讲堂 2007-12-01 09:09:15
该程序编译时所报的错误,但运行结果正确!请各位睇下为什么报个这个的错:

错误:仅当显式请求注释处理时才接受类名称“unchecked”
注意:ArrayListTest2.java 使用了未经检查或不安全的操作。
注意:要了解详细信息,请使用 -Xlint:unchecked 重新编译。
1 错误

代码:

import java.util.*;
class ArrayListTest2
{
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(3,"zhansan");
Student s2=new Student(4,"lisi");
Student s3=new Student(2,"jiaojiao");
Student s4=new Student(2,"genggeng");
ArrayList<Student> al=new ArrayList<Student>();
al.add(s1);
al.add(s2);
al.add(s3);
al.add(s4);
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 String toString()
{
return num+": "+name;
}
public int compareTo(Object o)
{
Student s=(Student)o;
int result= num>s.num?1:(num==s.num?0:-1);
if(result==0) result=name.compareTo(s.name);
return result;
}
}
...全文
179 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
庚武讲堂 2007-12-01
  • 打赏
  • 举报
回复
太好了,又学到一招了啊!

I can never thank you enough!
  • 打赏
  • 举报
回复
这是因为Collection和Iterator都属于泛型类,更改printElements方法:

static void printElements(Collection<Student> c) {
Iterator<Student> it=c.iterator();
while(it.hasNext()) {
System.out.println(it.next());
}
//或者使用foreach循环
for(Student stu : c) {
System.out.println(stu);
}
}

62,623

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧