当前位置: 首页 > news >正文

政府门户网站建设取得实质进展培训机构退费法律规定

政府门户网站建设取得实质进展,培训机构退费法律规定,无锡崇安网站建设,国内出版社网站建设在Java开发中,我们经常需要重写equals()和hashCode()方法,以确保对象在集合类(如HashSet、HashMap等)中能正确地进行比较和存储。Lombok提供了EqualsAndHashCode注解,可以帮助我们自动生成这些方法,大大简化…

在Java开发中,我们经常需要重写equals()hashCode()方法,以确保对象在集合类(如HashSetHashMap等)中能正确地进行比较和存储。Lombok提供了@EqualsAndHashCode注解,可以帮助我们自动生成这些方法,大大简化了代码编写。本文将结合具体的Java代码示例,详细介绍@EqualsAndHashCode注解的使用。

示例代码结构

我们有三个Java文件,分别是EqualsAndHashCode使用.javaChild.javaParent.java。下面我们来详细分析这些文件。

Parent.java

package com.gqy.question.知识点.EqualsAndHashCode使用;import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;@Data
@AllArgsConstructor
@NoArgsConstructor
class Parent{private Integer id;private String name;
}

这个类使用了Lombok的@Data@AllArgsConstructor@NoArgsConstructor注解,分别用于自动生成getter、setter、toString等方法,全参数构造函数和无参数构造函数。

Child.java

package com.gqy.question.知识点.EqualsAndHashCode使用;import lombok.*;@Data
@AllArgsConstructor
@NoArgsConstructor
@EqualsAndHashCode(callSuper = true)
@ToString(callSuper = true)
public class Child extends Parent{private Integer age;private String desc;
}

Child类继承自Parent类,除了使用@Data@AllArgsConstructor@NoArgsConstructor注解外,还使用了@EqualsAndHashCode(callSuper = true)@ToString(callSuper = true)注解。@EqualsAndHashCode(callSuper = true)表示在生成equals()hashCode()方法时,会考虑父类的属性。

EqualsAndHashCode使用.java

package com.gqy.question.知识点.EqualsAndHashCode使用;import java.util.HashMap;
import java.util.HashSet;/*** @author 顾无言* @version 1.0* @description: TODO* @date 2025/2/14 9:26*/public class EqualsAndHashCode使用 {public static void main(String[] args) {Child child1 = new Child();child1.setId(1);child1.setName("张三");child1.setAge(18);child1.setDesc("美女");Child child2 = new Child();child2.setId(2);child2.setName("李四");child2.setAge(18);child2.setDesc("美女");/***不使用@EqualsAndHashCode注解,打印结果为true* 得出结论:不使用@EqualsAndHashCode注解,默认情况下,判断的是当前类内部所有属性的值是否相等,如果相等,则认为这两个对象是相等的。*         不会比较继承的父类属性字段**//*** 使用@EqualsAndHashCode(callSuper = false)注解,打印结果为true* 得出结论:使用@EqualsAndHashCode(callSuper = false),判断的是当前类内部所有属性的值是否相等,如果相等,则认为这两个对象是相等的。*         不会比较继承的父类属性字段**//*** 使用@EqualsAndHashCode(callSuper = true)注解,打印结果为false* 得出结论:使用@EqualsAndHashCode(callSuper = true),判断的是当前类内部所有属性的值 以及 父类的所有字段属性是否相等,如果相等,则认为这两个对象是相等的。**//*** 综上:*  不使用@EqualsAndHashCode = @EqualsAndHashCode(callSuper = false)   只比较当前类的属性字段*  @EqualsAndHashCode(callSuper = true)    比较当前类的属性字段 以及 父类的所有字段属性**/System.out.println(child1.equals(child2));int i1 = child1.hashCode();int i2 = child2.hashCode();System.out.println(i2);System.out.println(i1);HashSet<Child> set = new HashSet<>();set.add(child1);set.add(child2);for (Child child : set) {System.out.println(child.toString());}}}

在这个类的main方法中,我们创建了两个Child对象child1child2,并对它们的属性进行了赋值。然后通过不同的@EqualsAndHashCode注解使用情况进行比较,得出了以下结论:

不同使用情况及结论

不使用@EqualsAndHashCode注解

默认情况下,equals()方法判断的是当前类内部所有属性的值是否相等,如果相等,则认为这两个对象是相等的,不会比较继承的父类属性字段

不会重写equals()hashCode()方法

使用@EqualsAndHashCode(callSuper = false)注解

这种情况下,equals()方法判断的也是当前类内部所有属性的值是否相等,如果相等,则认为这两个对象是相等的,同样不会比较继承的父类属性字段

重写equals()hashCode()方法

使用@EqualsAndHashCode(callSuper = true)注解

此时,equals()方法判断的是当前类内部所有属性的值以及父类的所有字段属性是否相等,只有当这些属性都相等时,才认为这两个对象是相等的。

重写equals()hashCode()方法

总结

  • 不使用@EqualsAndHashCode注解等同于@EqualsAndHashCode(callSuper = false),只比较当前类的属性字段。(在不考虑是否重写equals()hashCode()方法)
  • 使用@EqualsAndHashCode(callSuper = true)会比较当前类的属性字段以及父类的所有字段属性。

通过合理使用@EqualsAndHashCode注解,我们可以根据实际需求来确定对象比较时是否要考虑父类的属性,从而避免手动编写繁琐的equals()hashCode()方法,提高开发效率。

http://www.cadmedia.cn/news/7095.html

相关文章:

  • 沧县网站制作百度快速seo软件
  • wordpress看文网站长沙seo网络营销推广
  • 唐山网站建设培训软文如何推广
  • 购物网站界面设计广东最新新闻
  • sever2012 网站建设免费seo教程资源
  • 深圳网站设计 建设首选免费产品推广网站
  • 当前业界主流的网站建设有什么好的推广平台
  • 中国国际贸易单一窗口网站搜狗seo刷排名软件
  • 格尔木市住建和城乡建设局网站电商网站建设 网站定制开发
  • 建设网站出现400错误百度seo排名曝光行者seo
  • 湖南省网站备案时间网站编辑怎么做
  • 网站建设的实验原理seo自学网站
  • 携程网网站推广方式seo技术经理
  • 微网站建设哪家好常用的网络营销工具有哪些
  • 旅游公司网站建设百度指数分析大数据
  • 关于二手书的网站开发ppt合肥优化排名推广
  • 优化门户网站建设微信朋友圈营销文案
  • 西安百度网站建设网址注册查询
  • 《网页设计与网站建设》A卷答案长春网站建设方案优化
  • CQ网络科技网站建设全媒体运营师报名费多少钱
  • 做网站可以用新建项目的方式吗hao123主页
  • 成都租车公司网站江门网站建设模板
  • 网站建设论坛快速建站网站网络排名优化方法
  • 教学网站建设 效益网站如何做优化排名
  • html论坛代码大全seo关键词优化如何
  • 网站内容包括哪些营销策划公司经营范围
  • 网站教程网络黄页推广软件哪个好
  • 国发网站建设云南疫情最新消息
  • 在郑州网站建设爱站网关键词查询网站
  • 福田住房和建设局网站seo教程书籍