Lombok-很强大的POJO注解器

https://projectlombok.org/features/all
官网文档,只有几个注解,但是功能很是强大。

1. 在idea中使用Lombok,可以使用插件,在插件处输入Lombok就可以安装了,比较简单。
2. 一般是使用Maven导入lombok.jar
    <!-- https://mvnrepository.com/artifact/org.projectlombok/lombok -->
    <dependency>
        <groupId>org.projectlombok</groupId>
        <artifactId>lombok</artifactId>
        <version>1.16.6</version>
        <scope>provided</scope>
    </dependency>
3. @Getter/@Setter
使用在类和属性上,用在类上时,会对所有的非静态(non-static)属性生成相应的Getter/Setter方法。注解在属性上时,对该属性生成Getter/Setter方法。可以指定Getter/Setter方法的访问级别。
4. @EqualsAndHashCode
默认情况下,对所有非瞬态(non-transient)和非静态(non-static)字段生成equals和hashCode方法,也可以指定具体使用哪些属性
5. @ToString
生成toString方法,默认情况下,会输出类名、所有属性,属性按照顺序输出,以逗号分割。
6. @NoArgsConstructor,@RequiredArgsConstructor and @AllArgsContructor
无参构造器、部分参数构造器、全参构造器。当我们需要重载多个构造器的时候,Lombok就没办法了,这个时候我们就只能自己重载这些构造器。
7. @Data
@ToString,@EqualsAndHashCode,所有属性的@Getter,所有non-final属性的@Setter和@RequiredArgsConstructor的组合。通常情况,使用这个注解就OK了
8. @Accessors(chain = true)
使用链式结构
没有使用注解的代码:
public class Student {
        private String name;
        private int age;

        public String getName() {
            return name;
        }

        public Student setName(String name) {
            this.name = name;
            return this;
        }

        public int getAge() {
            return age;
        }

        public Student setAge(int age) {
            return this;
        }
    }
使用注解的代码:
@Accessors(chain = true)
    @Data
    @NoArgsConstructor(staticName = "of")
    public class Student {
        private String name;
        private int age;
    }
调用:
    Student student = Student.of().setName("wsk").setAge(12);
9. @RequiredArgsConstructor和@NonNull:
静态构造方法和必传参数的构造方法,
@Accessors(chain = true)
    @Setter
    @Getter
    @RequiredArgsConstructor(staticName = "ofName")//staticName中可以任意编写
    public class Student {
        @NonNull 
       private String name;//该元素在构造函数中必须输入
        private int age;
    }
测试代码:
    Student student = Student.ofName("WSK");
10. @Builder
使用builder,构建 建造者模式
public class Student {
        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;
        }

        public static Builder builder(){
                return new Builder();
        }
        public static class Builder{
                private String name;
                private int age;
                public Builder name(String name){
                        this.name = name;
                        return this;
                }

                public Builder age(int age){
                        this.age = age;
                        return this;
                }

                public Student build(){
                        Student student = new Student();
                        student.setAge(age);
                        student.setName(name);
                        return student;
                }
        }
    }
调用方式:
Student student = Student.builder().name("zs").age(24).build();
使用@Builder
    @Builder
    public class Student {
        private String name;
        private int age;
    }
调用方式同上。
11. 以下为不常用的
12. @Value
Immutable classes made very easy.
13. @SneakyThrows
To boldly throw checked exceptions where no one has thrown them before!
14. @Synchronized
synchronized done right: Don't expose your locks.
15. @Getter(lazy = true)
懒加载
16. @Log
Captain's Log, stardate 24435.7: "What was that line again?"
  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值