我写的一个java类出错,大家帮我分析一下
来源:百度知道 编辑:UC知道 时间:2024/06/23 00:00:53
//学生学号类
public class StudentNo {
private String sno;
public StudentNo(String no) {
sno=no;
}
public String getsno(){
return sno;
}
//新增的equals方法
public boolean equals(Object obj)
{
return (obj instanceof StudentNo)
&& (StudentNo.equals(((StudentNo) obj).getsno()));
}
public int hashCode()
{
return 1;
}
}
+============================
Eclipse提示出错:Cannot make a static reference to the non-static method equals(Object) from the type StudentNo
public class StudentNo {
private String sno;
public StudentNo(String no) {
sno=no;
}
public String getsno(){
return sno;
}
//新增的equals方法
public boolean equals(Object obj)
{
return (obj instanceof StudentNo)
&& (StudentNo.equals(((StudentNo) obj).getsno()));
}
public int hashCode()
{
return 1;
}
}
+============================
Eclipse提示出错:Cannot make a static reference to the non-static method equals(Object) from the type StudentNo
//这一句改一下
return (obj instanceof StudentNo)
&& (StudentNo.equals(((StudentNo) obj).getsno()));
改成
return (obj instanceof StudentNo)
&& (this.equals(((StudentNo) obj).getsno()));
很明显,是你调用equals方法的时候出的问题,你是通过StudentNo这个类直接调用equals方法,而你写的equals方法并不是静态的,既static,只有静态的方法才能通过类名来直接调用,普通的方法需要创建对象来调用。
return (obj instanceof StudentNo)
&& (this.getsno().equals(((StudentNo) obj).getsno()));