为什么重写equals方法无效 debug 提示source not found

为什么重写equals方法无效 debug 提示source not found

http://img1.sycdn.imooc.com//climg/5cc90fe50001a99207630725.jpg

http://img1.sycdn.imooc.com//climg/5cc90f4800018fd110230718.jpg

http://img1.sycdn.imooc.com//climg/5cc90f48000196a118800629.jpg

  1. 只有完全重复的对象four   debug的时候经历一段sourse not found后能转到equals方法里面去

  2. 我实现的 先判断学号是否重复的功能 实现不了,其他示例 debug时也无法转到equals方法里面去

正在回答

登陆购买课程后可参与讨论,去登陆

2回答

同学你好,

第一个问题:Source not found可能根据不同版本的eclipse情况不同,很可能解决不了,这个问题可以暂时跳过,按F7跳出这个类。 

第二个问题:如果只判断学号是否相等,可以在hashcode和equals中只比较学号即可。 

第三条个问题:应该是set集合添加five时,调用hashcode方法,去掉这句代码,five不确定之前是否存在相同的对象,所以调用equals()方法判断一下。

 如果我的回答解决了你的问题,请采纳。祝:学习愉快~

好帮手慕小班 2019-05-01 17:01:13

同学你好,请贴出具体的报错信息截图,以及完整的源码文件,便于排查错误。

1、针对source not found的解决办法:

点击Edit Source的按钮

http://img1.sycdn.imooc.com//climg/5cc95dae0001e18906960563.jpg

http://img1.sycdn.imooc.com//climg/5cc95d7b0001597903330132.jpghttp://img1.sycdn.imooc.com//climg/5cc95e28000114e006890601.jpg

找到JDK安装目录下的src.zip的压缩包

http://img1.sycdn.imooc.com//climg/5cc95e6e0001bed307870245.jpg

http://img1.sycdn.imooc.com//climg/5cc95e900001640906880568.jpg

添加完成后,就不会再弹出source not found  这个提示框了。

2、贴出代码中的equals方法重写有错误,例如:

http://img1.sycdn.imooc.com//climg/5cc95b75000138ab11820170.jpg

针对上面的一些错误,建议改成如下所写:

@Override
public boolean equals(Object obj) {
	if (this == obj)
		return true;
	if (this.class!=obj.getClass())
		return false;
	Student other = (Student) obj;
	//这里因为不清楚同学有几个属性值以及类型,就暂时写了两个
	if (this.getName().equals(other.getName())&&this.getScore()==other.getScore()) {
		return true;
	}else 
	 return false;
}

如果我的回答解决了你的问题,请采纳。祝:学习愉快~

  • 提问者 YEEeEM #1
    1.source not found的问题 按照这个操作了 还是会报错 我的jdk是eclipse和JDK都装在C盘的 win10系统 2.图中情景 是按本节3-11的练习来做的 我的想法是图2中 先判断stuld(学号)是否重复 再判断(其实后面判断与否无所谓 姓名和成绩允许重复) 3。刚刚测试了一下 把hashcode() 方法里面 这句删除result = prime * result + ((name == null) ? 0 : name.hashCode()); 图1中实例five才会在add过程中调用了重写的equals方法 请解释一下 谢谢
    2019-05-01 17:26:08
  • 好帮手慕小班 回复 提问者 YEEeEM #2
    同学你好,第一个问题:Source not found可能根据不同版本的eclipse情况不同,很可能解决不了,这个问题让他跳过一下,按F7跳出这个类。 第二个问题:如果只判断学号是否相等,让他在hashcode和equals中只比较学号即可。 第三条个问题:应该是set集合添加five时,调用hashcode方法,去掉这句代码,five不确定之前是否存在相同的对象,所以调用equals()方法判断一下。 如果我的回答解决了你的问题,请采纳。祝:学习愉快~
    2019-05-01 20:42:37
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师