永发信息网

这个equals的override为什么不对呢

答案:2  悬赏:70  手机版
解决时间 2021-04-11 09:08
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");

}
}
最佳答案
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;
    }
全部回答
通过统一定义 equals() 和 hashcode(), 可以提升类作为基于散列的集合中的关键字的使用性。究其根本,是java规范在作祟,每个java对象都有 hashcode() 和 equals() 方法。许多类根本就忽略了(override)这些方法的缺省实施
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
听说DNF暗影和忍者人物存在吗?真的假的
含拟人和排比的句子,带有拟人排比修辞手法的
期货都有什么辅导班能报??网上有吗?
今天买了条鲈鱼,拿回家把切开后,发现肉里有
------______doyougotothecitypark?------Usu
胥涧线/董稻路(路口)怎么去啊,有知道地址的
“找一个喜欢的人在一起吧,然后从星辰大海走
photo中调整——色调分离 是什么意思
小天鹅全自动洗衣机
红豆网址啊?知道我的可不可以告诉我啊
用手机上网,网速快慢是手机问题,还是网络问
单选题推动当今世界格局向多极化方向发展的主
南木公安局三七森林派出所在哪里啊,我有事要
高考体检不予录取和不宜就读有什么区别?
笔记本用外接电源时的问题
推荐资讯
名侦探柯蓝柯蓝的爸爸是谁
吻得太逼真嗎
全国各地有哪些比较好的livehouse
关闭超级QQ
•为什么人身上会含铜成分多
驾驶证拿到了,但一直放抽屉。请问实习期是怎
空间WAP2.0咋恢复成普通版.
电脑wlan开启状态但是不能搜索连接无线网络,
北京信息科技大学会计专业怎么样
艺姿美发在什么地方啊,我要过去处理事情
一块边长是6分米的方布,它的周长是________
以下是小明做的几个验证性实验,其中不会发生
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?