美文网首页学习工具
代码整洁之道:Lombok 的使用

代码整洁之道:Lombok 的使用

作者: IT实战联盟Lin | 来源:发表于2018-12-03 15:16 被阅读15次

    一、简介:Lombok是什么

    Lombok官网:https://projectlombok.org

    Lombok.jpg

    Lombok项目是一种自动接通你的编辑器和构建工具的一个Java库。不用再一次写额外的getter或者equals方法。

    二、Lombok 优点

    Lombok的两点主要原因就是:

    (1)、简化冗余的JavaBean代码;
    (2)、大大提高JavaBean中方法的执行效率;
    

    三、安装使用

    打开 IDEA 的 Settings 面板,并选择 Plugins 选项,然后点击 “Browse repositories”

    在输入框输入”lombok”,得到搜索结果,点击安装,然后安装提示重启 IDEA,安装成功;

    lombok安装.jpg

    四、Maven依赖引入

    <dependency>
        <groupId>org.projectlombok</groupId>
        <artifactId>lombok</artifactId>
        <version>1.16.18</version>
        <scope>provided</scope>
    </dependency>
    

    备注:scope=provided,说明它只在编译阶段生效,不需要打入包中。事实正是如此,Lombok在编译期将带Lombok注解的Java文件正确编译为完整的Class文件。

    五、UserInfo 实体类为例(set,get,toString 方法)

    @Getter
    @Setter
    @ToString
    public class UserInfo implements Serializable
    

    六、Lombok 其他注解

    @Setter
    @Getter
    @Data
    @Log(这是一个泛型注解,具体有很多种形式)
    @AllArgsConstructor
    @NoArgsConstructor
    @EqualsAndHashCode
    @NonNull
    @Cleanup
    @ToString
    @RequiredArgsConstructor
    @Value
    @SneakyThrows
    @Synchronized
    

    七、Lombok 常用注解使用详解

    1、@Data

    该注解使用在类上,该注解会提供getter、setter、equals、canEqual、hashCode、toString方法。

    注意的是,同时使用@Data 和 @AllArgsConstructor 后 ,默认的无参构造函数失效,如果需要它,要重新设置 @NoArgsConstructor
    
    2、@Cleanup
    @Cleanup 
    InputStream in = new FileInputStream(args[0]);
    @Cleanup 
    OutputStream out = new FileOutputStream(args[1]);
    
    3、@val

    类型推导

     val example = new ArrayList<String>();
     example.add("Hello, World!");
    

    对应的转换后代码就是:

     val example = new ArrayList<String>();
     example.add("Hello, World!");
    
    4、@ NonNull
    public NonNullExample(@NonNull Person person) {
        this.name = person.getName();
     }
    

    转换后就是:

    public NonNullExample(@NonNull Person person) {
        if (person == null) {
          throw new NullPointerException("person");
        }
        this.name = person.getName();
     }
    
    5、@ SneakyThrows

    暗中抛出异常,当我们需要抛出异常,在当前方法上调用,不用显示的在方法名后面写 throw

    @SneakyThrows(Exception.class)
    
    6、@ SneakyThrows

    该注解使用在方法上,这个注解用在 方法 上,可以将方法中的代码用 try-catch 语句包裹起来,捕获异常并在 catch 中用 Lombok.sneakyThrow(e) 把异常抛出,可以使用 @SneakyThrows(Exception.class) 的形式指定抛出哪种异常。该注解需要谨慎使用。

    private final Object lock = new Object();
    @Synchronized("lock")
    public void foo() {
        // Do something
    }
    
    7、@toString

    该注解使用在类上,该注解默认生成任何非讲台字段以名称-值的形式输出。

    1、如果需要可以通过注释参数includeFieldNames来控制输出中是否包含的属性名称。 
    2、可以通过exclude参数中包含字段名称,可以从生成的方法中排除特定字段。 
    3、可以通过callSuper参数控制父类的输出。
    

    总结:Lombok的目的是减少代码的重复编写,并提供比较好的解决方案。也存在一些争议性的注解,大家可以根据实际场景进项使用。

    贡献者

    更多精彩内容可以关注“IT实战联盟”公众号哦~~~

    image

    相关文章

      网友评论

        本文标题:代码整洁之道:Lombok 的使用

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