重写equals()未重写hashCode(),添加抑制注解仍遇编译警告求助
解决Java编译时的[overrides]和[unchecked]警告问题
我完全懂你现在的处境——教授还没讲hashCode是什么,但编译时跳出来的警告确实闹心。按照教授的要求,你只需要把两个抑制注解精准加到对应位置就行,具体操作步骤如下:
添加类级别
@SuppressWarnings("overrides")注解
直接在List类的定义前加上这个注解,就能抑制“重写equals但未重写hashCode”的编译警告:@SuppressWarnings("overrides") public class List implements ListInterface{ // 类的实现代码... }给equals()方法添加
@SuppressWarnings("unchecked")注解
在你的equals方法定义前加上这个注解,用来压制方法内部可能出现的类型转换unchecked警告:@SuppressWarnings("unchecked") @Override public boolean equals(Object o) { // equals方法的实现逻辑... }
额外提一句(提前了解不亏)
Java有个规范:如果两个对象通过equals()判断相等,它们的hashCode()返回值必须一致。这就是编译器警告你的核心原因——你重写了equals()却没处理hashCode()。不过既然教授让你先靠注解抑制,那就先按要求来,等后续学了hashCode的知识,再回来补全这个方法就好。
内容的提问来源于stack exchange,提问作者csstudent2x
相关产品推荐
相关产品推荐

