You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

重写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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 08:53:54