网站首页 > java教程 正文
基础知识回顾
1、== : 操作符,生成一个boolean结果,计算的是操作数的值之间的关系;
2、equals():Object类的实例方法,比较两个对象的content是否相同;
3、hashCode():Object类的native方法 , 用于获取对象的哈希值,确定该对象在哈希表中的索引位置,实际上是一个int型整数。
总结:2个对象hashCode相等,一定equals,2个对象equals,不一定hashCode相等。
Lombok插件
@Data,为Java类生成读写属性的功能,生成getter、setter方法,还会为类提供:equals()、hashCode()、toString()方法。
@EqualsAndHashCode: 生成equals(Object other)和hashCode()方法,通过参数of指定仅使用的属性,也可以通过参数exclude排除一些属性,默认仅使用该类中定义的属性且不调用父类的方法,如需要调用父类:@EqualsAndHashCode(callSuper = true)。
@Accessors,存取器,使用:配置getter和setter生成结果。
代码案例
package com.what21.demo.bean;
import lombok.Data;
public class BeanTest {
@Data
public static class People {
private Integer id;
}
@Data
public static class User extends People {
private String name;
private Integer age;
}
public static void main(String[] args) {
// 用户1
User user1 = new User();
user1.setId(1);
user1.setName("张三");
user1.setAge(18);
// 用户2==========<ID不一样>
User user2 = new User();
user2.setId(2);
user2.setName("张三");
user2.setAge(18);
// 输出:true
System.out.println(user1.equals(user2));
}
}
package com.what21.demo.bean;
import lombok.Data;
import lombok.EqualsAndHashCode;
public class BeanTest2 {
@Data
public static class People {
private Integer id;
}
@Data
@EqualsAndHashCode(callSuper = false)
public static class User extends People {
private String name;
private Integer age;
}
public static void main(String[] args) {
// 用户1
User user1 = new User();
user1.setId(1);
user1.setName("张三");
user1.setAge(18);
// 用户2==========<ID不一样>
User user2 = new User();
user2.setId(2);
user2.setName("张三");
user2.setAge(18);
// 输出:true
System.out.println(user1.equals(user2));
}
}
package com.what21.demo.bean;
import lombok.Data;
import lombok.EqualsAndHashCode;
public class BeanTest3 {
@Data
public static class People {
private Integer id;
}
@Data
@EqualsAndHashCode(callSuper = true)
public static class User extends People {
private String name;
private Integer age;
}
public static void main(String[] args) {
// 用户1
User user1 = new User();
user1.setId(1);
user1.setName("张三");
user1.setAge(18);
// 用户2==========<ID不一样>
User user2 = new User();
user2.setId(2);
user2.setName("张三");
user2.setAge(18);
// 用户2==========<ID一样>
User user3 = new User();
user1.setId(2);
user1.setName("张三");
user1.setAge(18);
// 输出:true
System.out.println(user1.equals(user2));
// 输出:false
System.out.println(user1.equals(user3));
}
}
猜你喜欢
- 2024-11-14 这3款Chrome插件不火,天理难容(chrome插件能做什么)
- 2024-11-14 都2020年了,这些6到起飞的idea插件你还没用过?
- 2024-11-14 你还在 Java 代码中写 set/get 方法?赶快试试这款插件吧!
- 2024-11-14 限时白嫖!分享10个 解放双手的 IDEA 插件,码农:工作效率瞬间翻倍
- 2024-11-14 Logstash Java Output 插件构建与使用
- 2024-11-14 IDEA java开发工具插件推荐,有它效率提升10倍
- 2024-11-14 Zephyr是一个类似OSGI的Java插件框架
- 2024-11-14 种草 Vue3 中几个好玩的插件和配置
- 2024-11-14 这款 Chrome 插件,让你的项目联调 so easy
- 2024-11-14 「Java工具开发」Maven插件开发之实战篇(二)
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- java反编译工具 (77)
- java反射 (57)
- java接口 (61)
- java随机数 (63)
- java7下载 (59)
- java数据结构 (61)
- java 三目运算符 (65)
- java对象转map (63)
- Java继承 (69)
- java字符串替换 (60)
- 快速排序java (59)
- java并发编程 (58)
- java api文档 (60)
- centos安装java (57)
- java调用webservice接口 (61)
- java深拷贝 (61)
- 工厂模式java (59)
- java代理模式 (59)
- java.lang (57)
- java连接mysql数据库 (67)
- java重载 (68)
- java 循环语句 (66)
- java反序列化 (58)
- java时间函数 (60)
- java是值传递还是引用传递 (62)
本文暂时没有评论,来添加一个吧(●'◡'●)