美文网首页
Lombok的基本用法

Lombok的基本用法

作者: yunmuzhou丶 | 来源:发表于2020-07-06 21:01 被阅读0次

一、引入lombok

      <!-- https://mvnrepository.com/artifact/commons-io/commons-io -->
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <version>1.18.4</version>
            <scope>provided</scope>
        </dependency>

IDEA还需要下载lombok插件。

二、lombok的使用

1.@Data
@Data
public class Student {

    private String name;

    private Integer age;
}

@Data的功能很强大:

        /**
         * @Data
         * 会为类的所有属性自动生成setter/getter、equals、canEqual、hashCode、toString方法,如为final属性,则不会为该属性生成setter方法
         */
        Student student = new Student();
        student.setAge(18);
        student.setName("yunmuzhou");
        //从日志中可以看出,toString()已经被重写
        log.info("@Data:" + student);

输出日志:

@Data:Student(name=yunmuzhou, age=18)

2.@Getter & @Setter
public class Person {

    @Getter
    @Setter
    private String name;

    @Getter
    @Setter
    private Integer age;
}

但是借助于Lombok,一切都变得优雅起来,代码篇幅省了一半

        /**
         * @Getter
         * @Setter
         * 省去了写getter(),setter()方法
         */
        Person person = new Person();
        person.setAge(10);
        person.setName("ymz");
        log.info("@Getter age :" + person.getAge() + ",@Getter name : " + person.getName());

输出结果:

@Getter age :10,@Getter name : ymz

3.@Builder
@Data
@Builder
public class Man {

    private String name;

    private String sex;
}

new对象变得优雅了:

        /**
         * @Builder
         * 链式编程,很方便的创建一个新的对象 =====(以build()方法结尾) ====
         *
         * 1.构造一个空对象
         * 2.构造一个对象并初始化
         */
        Man man01 = Man.builder().build();
        Man man02 = Man.builder().name("ymz").sex("male").build();
        log.info("man01 : " + man01);
        log.info("man02 : " + man02);

输出结果:

man01 : Man(name=null, sex=null)
man02 : Man(name=ymz, sex=male)

4.@AllArgsConstructor & @NoArgsConstructor & @RequiredArgsConstructor
@Data
//@AllArgsConstructor
//@NoArgsConstructor
@RequiredArgsConstructor
public class Human {

    private String name;

    private String sex;

    private final String address;
}
        /**
         * @AllArgsConstructor 全参数构造
         * 构建一个全部参数的构造方法
         */
        //Human man = new Human();
        /**
         * @NoArgsConstructor 无参数构造
         * 构建一个无参构造
         */
        Human man = new Human();
        /**
        * 构建一个只包含final修饰的构造方法
        */
        Human man = new Human("浙江");
5.@NonNull

优雅的进行null判断:

   public static void testNonNull(@NonNull String name){
        log.info(name);
   }

测试一下:

testNonNull(null);

结果:

Exception in thread "main" java.lang.NullPointerException: name is marked non-null but is null
6.很方便的关闭流stream

假如我们要读取一个文档,一般会这样操作:

image.png
注意,这个文件句柄在使用完成之后是一定要手动 close的,否则就有可能资源泄漏。
有了Lombok之后,这种擦屁股活儿统统不用干了,一个 @Cleanup注解即可搞定
image.png
7.异常捕捉的便捷性

比如我们打开一个 txt文本文件:

image.png
这地方的 FileNotFoundException异常,要么显式地在函数级抛出,要么就像上面一样 try/catch内部消灭。
如果在编码时,不想处理这种繁杂的异常处理,你可以使用Lombok的 @SneakyThrows注解进行简化,比如上面的代码就可以简化为:
image.png
必须友情提示的是:这样写你是爽了,但你很有可能会被队友一顿暴打,因为别人调用你编写的函数,并不能显式的获知需要处理哪些异常,这样容易留坑
好了,受限于篇幅限制,抛砖引玉就到这里了。
上面列举了几个平时项目开发中使用非常频繁的Lombok注解,除此之外,还有诸如像:
  • @ToString:为类自动生成toString()方法
  • @EqualsAndHashCode:为类自动生成hashCode和equals实现
  • @Log:为类自动生成log日志记录
  • @Synchronized:为类方法或实例方法自动生成synchronized保护
    等工具也是非常好用的,大家可以尝试在项目里用起来。
    从此,代码5分钟,划水2小时不是梦。。。
    部分内容引用来源CodeSheep

相关文章

  • Lombok的基本用法

    一、引入lombok IDEA还需要下载lombok插件。 二、lombok的使用 1.@Data @Data的功...

  • lombok用法

    @Data @AllArgsConstructor @NoArgsConstructor @Setter @Get...

  • lombok的用法

    加入maven依赖参考[https://www.cnblogs.com/liangzilingyu/p/13992...

  • JAVA线程池常见用法及其原理

    JAVA线程池常见用法及其原理 JAVA线程池常见用法: 1.代码实现 import lombok.extern....

  • Lombok高级用法

    bean中的链式风格 关键词@Accessors最佳实践 静态构造方法 构造参数为空的最佳实践 构造参数为name...

  • Lombok用法简介

    Lombok 简介 Lombok项目是一个Java库,它会自动插入您的编辑器和构建工具中,从而为您的Java增光添...

  • lombok @Accessors用法

    @AccessorsAccessor的中文含义是存取器,@Accessors用于配置getter和setter方法...

  • Lombok EqualsAndHashCode 的用法

    @EqualsAndHashCode 此注解会生成equals(Object other) 和 hashCode(...

  • lombok 下的@Builder注解用法

    lombok 下的@Builder注解用法https://blog.csdn.net/qq_35568099/ar...

  • Lombok的基本使用

    以前的Java项目中,充斥着太多不友好的代码:POJO的getter/setter/toString;异常处理;I...

网友评论

      本文标题:Lombok的基本用法

      本文链接:https://www.haomeiwen.com/subject/ncggqktx.html