• Lombok 使用攻略


    1. Lombok 简介

       Lombok 可以通过简单的注解来帮助我们简化消除一些必须有但显得很臃肿的Java代码,通过使用对应的注解,可以在编译源码的时候生成对应的方法。

       Lombok 既是一个 IDE 插件,也是一个项目要依赖的 jar 包。

       Lombok 依赖 jar 包的原因是因为编译时要用它的注解。插件的原因是他要在编译器编译时通过操作 AST (抽象语法树)改变字节码生成。

       也就是说它可以改变 Java 语法. 它不像 Spring 的依赖注入或者 Hibernate 的 orm 一样是运行时的特性,而是编译时的特性。

       官网地址:https://projectlombok.org

    2. 使用方式  

     Maven 坐标:

            <dependency>
                <groupId>org.projectlombok</groupId>
                <artifactId>lombok</artifactId>
                <version>${lombok.version}</version>
            </dependency>

        IDEA 安装插件:

       编译时启用注解处理:

    3. 项目实战

      不使用 Lombok @Data:

    public class Student{
        private int age = 10;
        private String name;
        public int getAge() {
            return age;
        }
        public void setAge(int age) {
            this.age = age;
        }
        protected void setName(String name) {
            this.name = name;
        }
    }

       使用 Lombok @Data (编译时为所有字段添加@ToString/@EqualsAndHashCode/@Getter/为非final字段添加@Setter/@RequiredArgsConstructor):

    @Data
    public class Student{
        private int age = 10;
        private String name;
    }

       不使用  Lombok @CleanUp:

            InputStream in = new FileInputStream(args[0]);
            try {
                OutputStream out = new FileOutputStream(args[1]);
                try {
                    byte[] b = new byte[10000];
                    while (true) {
                        int r = in.read(b);
                        if (r == -1) {
                            break;
                        }
                        out.write(b, 0, r);
                    }
                } finally {
                    if (out != null) {
                        out.close();
                    }
                }
            } finally {
                if (in != null) {
                    in.close();
                }
    
            }

       使用 Lombok@CleanUp(在编译时添加调用close方法):

            @Cleanup InputStream inputStream = new FileInputStream(args[0]);
            @Cleanup OutputStream outputStream = new FileOutputStream(args[1]);
            byte[] b = new byte[10000];
            while (true) {
                int r = inputStream.read(b);
                if (r == -1) break;
                outputStream.write(b, 0, r);
            }

       当然还有比 @Data 粒度更小的注解,比如 @Getter、@Setter、@NoArgsConstructor,更多注解:https://projectlombok.org/features/all

     

  • 相关阅读:
    Python数值计算:一 使用Pylab绘图(2)
    Python数值计算:一 使用Pylab绘图(1)
    Gromacs处理amino acid residues小结
    实用正则表达式匹配和替换
    将Word转为带书签的PDF
    QT在windows下实现截屏操作并保存为png图片
    VMware虚拟机无法识别U盘解决方案
    C/C++/Qt 统计运行时间
    ffmpeg 中 swscale 的用法
    用qt代码怎样编写图片保存格式[qt4.6]
  • 原文地址:https://www.cnblogs.com/java-class/p/8677730.html
Copyright © 2020-2023  润新知