一个编译时候出现的错误

来源:百度知道 编辑:UC知道 时间:2024/05/13 10:16:31
注意:Stack.java 使用了未经检查或不安全的操作。
注意:要了解详细信息,请使用 -Xlint:unchecked 重新编译。

这是不是配置环境的哪里错误还是?
import java.util.*;
class Stack
{

public static void main(String[] args)
{
HashSet hs=new HashSet();

hs.add(new Student(1,"wangwu"));
hs.add(new Student(2,"lisi"));
hs.add(new Student(3,"zhangsan"));
hs.add(new Student(1,"wangwu"));

Iterator it=hs.iterator();
while(it.hasNext())
{
System.out.println(it.next());
}
}
}

class Student
{
int num;
String name;
Student(int num,String name)
{
this.num=num;
this.name=name;
}
public String toString()
{
return num+";"+name;
}
public int hashCode()
{
return num*name.hashCode();
}
public boolean equals(Object o)
{

是代码中有bug。把main函数所在的类声明为public。自定义的类名不要用系统的Stack名字。可以用Stack1你可以用javac -Xlint:unchecked Stack1.java编译警告如下:Stack1.java:13: 警告:[unchecked] 对作为普通类型 java.util.HashSet 的成员的 add(
E) 的调用未经检查
hs.add(stu);
^
Stack1.java:16: 警告:[unchecked] 对作为普通类型 java.util.HashSet 的成员的 add(
E) 的调用未经检查
hs.add(new Student(2,"lisi"));
^
Stack1.java:17: 警告:[unchecked] 对作为普通类型 java.util.HashSet 的成员的 add(
E) 的调用未经检查
hs.add(new Student(3,"zhangsan"));
^
Stack1.java:18: 警告:[unchecked] 对作为普通类型 java.util.HashSet 的成员的 add(
E) 的调用未经检查
hs.add(new Student(1,"wangwu"));
^
4 警告

用java Stack1可以看到程序正常结果。

这个问题属于异常处理中是未检查异常。暂时我还不知道怎么处理。

配置上应该没有错误。
另外你说的这个应该是“警告”而不是“错误”吧。
出现警告的原因比较多(类型转换之类的),没有代码,不知道是怎么回事。
程序能运行吗?

你用的JDK版本是多少的。。。?
1.5以后的都这样用:

Set<Studnet> studentSet=new HashSet<Student>();

这是泛型。