专业的JAVA编程教程与资源

网站首页 > java教程 正文

Java,Lombok插件,@Data、@EqualsAndHashCode、@Accessors注解

temp10 2024-11-14 17:51:17 java教程 11 ℃ 0 评论

基础知识回顾

1、== : 操作符,生成一个boolean结果,计算的是操作数的值之间的关系;

2、equals():Object类的实例方法,比较两个对象的content是否相同;

Java,Lombok插件,@Data、@EqualsAndHashCode、@Accessors注解

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));
    }

}

Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表