java 一样的数据用equals方法显示false

这是代码

img

我也重写了equals方法,因为百度上说是因为没重写

img

后来重写了也还是这样显示false,没重写也是false

不知道问题出在哪里,难道说是request.getParameter得到的数据有问题?,然后我查了一下说可能是字节码问题,于是我

img


但还是有问题,不是很懂问题出在哪里,求各位解答


目前需求是遍历List<ABC> news = service.findcopy(); 比对request传的username值
username的类型为String,而news集合的元素类型为ABC,这样equal比对肯定不相等
应该获取ABC属性值,进行比对才合理

equals 方法 24行 getClass,比较他们类型的时候会返回false,因为一个是String,另一个是ABC

直接将List 里的ABC类型转换为String类型即可比较,重写equal方法需同时重写hashCode方法,

img

首先你这个是对象ABC和字符串String之间比较,equals方法在对象和字符串之间是不一样的。
对象的equals方法比较的是存储数据时的hashCode值,字符串的equals方法,是重写过的,就不是比较存储时的hashCode的值,是hashCode值所指向的具体地址的值,就是“123”。
你可以百度一下对象和字符串的equals方法区别,就知道了

ABC类对象和String对象比较,你的equals方法的第二行过不去,类型不匹配,你可以debug一下,在equals方法里打个断点