a1574300748 2023-04-07 22:27 采纳率: 100%
浏览 10
已结题

用ideal调用java封装对象中的重写equals失败

我在ideal中java封装对象的时候调用equals() and hashCode()的时候为什么会出现报错,求解答.


package Test;

import java.util.Objects;

public class Student {
    private String name;
    private int age;

    public Student() {
    }

    public Student(String name, int age) {
        this.name = name;
        this.age = age;
    }

    /**
     * 获取
     * @return name
     */
    public String getName() {
        return name;
    }

    /**
     * 设置
     * @param name
     */
    public void setName(String name) {
        this.name = name;
    }

    /**
     * 获取
     * @return age
     */
    public int getAge() {
        return age;
    }

    /**
     * 设置
     * @param age
     */
    public void setAge(int age) {
        this.age = age;
    }

    public String toString() {
        return "Student{name = " + name + ", age = " + age + "}";
    }

    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;
        Student student = (Student) o;
        return age == student.age && Objects.equals(name, student.name);
    }

    @Override
    public int hashCode() {
        return Objects.hash(name, age);
    }
}

![img](https://img-mid.csdnimg.cn/release/static/image/mid/ask/714485778086142.png "#left")

img

  • 写回答

2条回答 默认 最新

  • Huazie 全栈领域优质创作者 2023-04-07 22:37
    关注

    你是不是 jdk 没有引入呀?你看看 错误提示是啥?
    我这里正常的

    img

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
  • CSDN-Ada助手 CSDN-AI 官方账号 2023-04-09 01:51
    关注
    不知道你这个问题是否已经解决, 如果还没有解决的话:
    • 这篇博客: Java 综合面试题汇总一中的 9. 说说equals() ,==,hashCode() 之间的关系? 部分也许能够解决你的问题, 你可以仔细阅读以下内容或者直接跳转源博客中阅读:

      equals() 与 == 的区别

      • Object 的 equals() 方法底层是直接调用的 == 进行比较。
      • equals() 默认比较的是对象的引用,即地址值相同对象才相等,否则不相等。如果重写equals()方法则比较的是内容,比如 String 类默认重写 equals()。
      • == 对于引用类型比较的是地址值,对于基本类型比较的是值。

      equals() 与 hashcode() 的关系

      • hashcode 是根据对象的地址值计算得出的整数。
      • 两个对象相等,那么它们的 hashcode 一定相等;反之则不成立,因为 生成 hashcode 存在哈希冲突的情况。

      重写 equals() 方法 为什么也要重写 hashcode() 方法?

      • Java 规定:因为在 Java 中规定,如果两个对象相等,那么它们的 hashcode 值必须一样。
      • 对于 HashSet 来说,元素不允许重复,判断条件就是根据 equals 和 hashcode,所以要保持一致。对于 Map 的 key 来说也是如此。

    如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 4月22日
  • 已采纳回答 4月14日
  • 创建了问题 4月7日

悬赏问题

  • ¥15 我用C语言easyx图形库绘制了一个3d游戏方框透视,但进入游戏时候鼠标准星对准方框边缘 鼠标光标就会弹出来这是啥情况怎样让光标对准绘制的方框点击鼠标不弹出光标好烦这样
  • ¥20 用Power Query整合的问题
  • ¥20 基于python进行多背包问题的多值编码
  • ¥15 相同型号电脑与配置,发现主板有一台貌似缺少了好多元器件似的,会影响稳定性和使用寿命吗?
  • ¥15 要求编写稀疏矩阵A的转置矩阵的算法
  • ¥15 编写满足以下要求的停车场管理程序,设停车场只有一个可停放n辆车的狭窄通道且只有一个大门可供车辆进出。
  • ¥15 C语言:数据子序列基础版
  • ¥20 powerbulider 导入excel文件,显示不完整
  • ¥15 用keil调试程序保证结果进行led相关闪烁
  • ¥15 paddle训练自己的数据loss降不下去