Lombok 常用注解

Lombok 常用注解详解

1. 概述

Lombok 是一个 Java 库,它通过注解的方式帮助开发者减少样板代码(boilerplate code)的编写。通过使用 Lombok,开发者可以简化 getter、setter、构造函数等方法的编写,从而提高开发效率。

2. 常用注解
2.1 @Getter@Setter
  • 作用:自动生成类的 getter 和 setter 方法。

  • 使用示例

    import lombok.Getter;
    import lombok.Setter;
    
    @Getter
    @Setter
    public class User {
        private String name;
        private int age;
    }
    

    生成的代码:

    public class User {
        private String name;
        private int age;
    
        public String getName() {
            return name;
        }
    
        public void setName(String name) {
            this.name = name;
        }
    
        public int getAge() {
            return age;
        }
    
        public void setAge(int age) {
            this.age = age;
        }
    }
    
2.2 @ToString
  • 作用:自动生成 toString 方法。

  • 使用示例

    import lombok.ToString;
    
    @ToString
    public class User {
        private String name;
        private int age;
    }
    

    生成的代码:

    public class User {
        private String name;
        private int age;
    
        @Override
        public String toString() {
            return "User(name=" + name + ", age=" + age + ")";
        }
    }
    
2.3 @EqualsAndHashCode
  • 作用:自动生成 equalshashCode 方法。

  • 使用示例

    import lombok.EqualsAndHashCode;
    
    @EqualsAndHashCode
    public class User {
        private String name;
        private int age;
    }
    

    生成的代码:

    public class User {
        private String name;
        private int age;
    
        @Override
        public boolean equals(Object o) {
            if (this == o) return true;
            if (o == null || getClass() != o.getClass()) return false;
            User user = (User) o;
            return age == user.age &&
                    Objects.equals(name, user.name);
        }
    
        @Override
        public int hashCode() {
            return Objects.hash(name, age);
        }
    }
    
2.4 @NoArgsConstructor, @AllArgsConstructor, @RequiredArgsConstructor
  • 作用:自动生成构造函数。

  • 使用示例

    import lombok.NoArgsConstructor;
    import lombok.AllArgsConstructor;
    import lombok.RequiredArgsConstructor;
    
    @NoArgsConstructor
    @AllArgsConstructor
    @RequiredArgsConstructor
    public class User {
        private String name;
        private final int age;
    }
    

    生成的代码:

    public class User {
        private String name;
        private final int age;
    
        public User() {
        }
    
        public User(String name, int age) {
            this.name = name;
            this.age = age;
        }
    
        public User(int age) {
            this.age = age;
        }
    }
    

@NoArgsConstructor:生成一个无参数的构造函数。

@AllArgsConstructor:生成一个包含所有字段的构造函数。

@RequiredArgsConstructor:生成一个包含所有 final 字段和 @NonNull 注解字段的构造函数。

2.5 @Data
  • 作用:组合注解,包含 @Getter, @Setter, @ToString, @EqualsAndHashCode, @RequiredArgsConstructor

  • 使用示例

    import lombok.Data;
    
    @Data
    public class User {
        private String name;
        private int age;
    }
    

    生成的代码:

    public class User {
        private String name;
        private int age;
    
        public String getName() {
            return name;
        }
    
        public void setName(String name) {
            this.name = name;
        }
    
        public int getAge() {
            return age;
        }
    
        public void setAge(int age) {
            this.age = age;
        }
    
        @Override
        public String toString() {
            return "User(name=" + name + ", age=" + age + ")";
        }
    
        @Override
        public boolean equals(Object o) {
            if (this == o) return true;
            if (o == null || getClass() != o.getClass()) return false;
            User user = (User) o;
            return age == user.age &&
                    Objects.equals(name, user.name);
        }
    
        @Override
        public int hashCode() {
            return Objects.hash(name, age);
        }
    
        public User(int age) {
            this.age = age;
        }
    }
    
2.6 @Builder
  • 作用:自动生成建造者模式的代码。

  • 使用示例

    import lombok.Builder;
    
    @Builder
    public class User {
        private String name;
        private int age;
    }
    

    生成的代码:

    public class User {
        private String name;
        private int age;
    
        User(String name, int age) {
            this.name = name;
            this.age = age;
        }
    
        public static UserBuilder builder() {
            return new UserBuilder();
        }
    
        public static class UserBuilder {
            private String name;
            private int age;
    
            UserBuilder() {
            }
    
            public UserBuilder name(String name) {
                this.name = name;
                return this;
            }
    
            public UserBuilder age(int age) {
                this.age = age;
                return this;
            }
    
            public User build() {
                return new User(name, age);
            }
    
            @Override
            public String toString() {
                return "UserBuilder(name=" + name + ", age=" + age + ")";
            }
        }
    }
    
3. 总结

Lombok 通过注解的方式极大地简化了 Java 代码的编写,特别是对于 getter、setter、构造函数等样板代码的生成。通过使用 @Getter, @Setter, @ToString, @EqualsAndHashCode, @NoArgsConstructor, @AllArgsConstructor, @RequiredArgsConstructor, @Data, @Builder 等注解,开发者可以显著提高开发效率,减少代码冗余。希望这个教程能帮助你更好地理解和掌握 Lombok 的常用注解。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

需要重新演唱

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值