IDEA快速为JavaClass重写equals()和hashCode()方法

更新时间:2023-07-12 07:49:38 阅读: 评论:0

IDEA快速为JavaClass重写equals()和hashCode()⽅法菜苋
  有⼀些场景需要重写 Java 类的 equals 和 hashCode ⽅法,如 Java 对象作为 Map 的 key 时。IDEA 提供了快速实现重写上述 2 个⽅法的便捷操作,过程简述如下。
  定义⼀个 Java Class,名为:Student,代码如下。
st.model;
import lombok.Getter;
import lombok.Setter;
@Getter
@Setter
2035年的中国
public class Student {包含函数
// 姓名
private String stuNm;
// 年龄
private String age;
// 构造函数
public Student(String stuNm, String age){
温暖作文开头this.stuNm = stuNm;
this.age = age;
}
}
  快速⽣成上述 2 个⽅法的过程如下:在 Student.java ⽂件中按下 Alt + Ins,调出 Generate,选中 “equals() and
hashCode()”。
  在 Generate equals() and hashCode() 窗⼝中,选择 “IntelliJ Default” Template。
  选择被包含在 equals() ⽅法中的属性。
  选择被包含在 hashCode() ⽅法中的属性。
  选择所有的⾮ null 属性。
数学公式小学
  点击 Finish 按钮,即可快速⽣成 equals() 和 hashCode() ⽅法,⽣成完后的 Student.java ⽂件如下所⽰。
st.model;
import lombok.Getter;
钢化厂
低卡路里食物表
import lombok.Setter;
@Getter
@Setter
public class Student {
// 姓名
private String stuNm;
// 年龄
private String age;
// 构造函数
public Student(String stuNm, String age){
this.stuNm = stuNm;
this.age = age;
}
@Override
public boolean equals(Object o){
if(this== o)return true;
if(!(o instanceof Student))return fal;
Student student =(Student) o;
if(stuNm != null ?!stuNm.equals(student.stuNm): student.stuNm != null)return fal;
return age != null ? age.equals(student.age): student.age == null;
}
@Override
public int hashCode(){
int result = stuNm != null ? stuNm.hashCode():0;
官运平步青云
result =31* result +(age != null ? age.hashCode():0);
return result;
}
}
  如果不重写 equals() 和 hashCode() ⽅法,对引⽤对象进⾏对⽐时,默认对⽐的是对象内存地址。⽽重写⽅法后,只要引⽤对象的姓名和年龄属性值相等,即认为 2 个对象相等。测试⽰例如下。
st.model;
st.model.Student;
public class Test {
public static void main(String[] args){
Student stuA =new Student("张三","20");
Student stuB =new Student("张三","20");
System.out.println(stuA.equals(stuB));// true
System.out.println(stuA == stuB);// fal
System.out.println(stuA.hashCode()== stuB.hashCode());// true }
}

本文发布于:2023-07-12 07:49:38,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/fan/89/1078176.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:对象   重写   相等   包含   年龄   过程
相关文章
留言与评论(共有 0 条评论)
   
验证码:
推荐文章
排行榜
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图