public class Student {
private String stu;
private int num;
public Student(String stu, int num) {
super();
this.stu = stu;
this.num = num;
}
@Override
public boolean equals(Object obj) {
if(obj==null)
return false;
else if((this.num==obj.num)&&(this.stu==obj.stu))
return true;
else
return false;
}
public static void main(String[] args){
Student st1=new Student("lisi",1);
Student st2=new Student("lisi",1);
System.out.println(st1);
System.out.println(st2);
if(st1.equals(st2)){
System.out.println("same student");
}
else
System.out.println("not same student");
}
}
这个equals的override为什么不对呢
答案:2 悬赏:70 手机版
解决时间 2021-04-11 09:08
- 提问者网友:兔牙战士
- 2021-04-11 02:56
最佳答案
- 五星知识达人网友:由着我着迷
- 2021-04-11 03:59
Object类是没有num和stu这两个成员变量的,你应该将Object类转成Student类
@Override
public boolean equals(Object obj) {
Student s = (Student)obj;
if(s==null)
return false;
else if((this.num==s.num)&&(this.stu==s.stu))
return true;
else
return false;
}
@Override
public boolean equals(Object obj) {
Student s = (Student)obj;
if(s==null)
return false;
else if((this.num==s.num)&&(this.stu==s.stu))
return true;
else
return false;
}
全部回答
- 1楼网友:持酒劝斜阳
- 2021-04-11 05:05
通过统一定义 equals() 和 hashcode(), 可以提升类作为基于散列的集合中的关键字的使用性。究其根本,是java规范在作祟,每个java对象都有 hashcode() 和 equals() 方法。许多类根本就忽略了(override)这些方法的缺省实施
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯