我写的一个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

//这一句改一下
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()));