zoukankan      html  css  js  c++  java
  • 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

     

  • 相关阅读:
    MFC OnOk(),OnCancel(),OnClose(),OnDestroy()的区别总结
    MFC中的Invalidate、OnDraw、OnPaint函数的作用
    MFC中和定时器使用
    SwapBuffers的等待,虚伪的FPS(转)
    OpenGl常用函数说明
    Win7_Ultimate + VS2010 + openGL_MFC单文档应用开发框架搭建步骤
    OpenGL模型视图变换、投影变换、视口变换的理解
    不同电脑的开机启动项
    第一百二十三节,JavaScript错误处理与调试
    第一百二十二节,JavaScript表单处理
  • 原文地址:https://www.cnblogs.com/java-class/p/8677730.html
Copyright © 2011-2022 走看看