• lombok 简化java代码注解


    lombok 简化java代码注解

    安装lombok插件

    以intellij ide为例

    File-->Setting-->Plugins-->搜索“lombok plugin”,安装后重启ide

    lombok 注解

    lombok 提供的注解不多,可以参考官方视频的讲解和官方文档。

    Lombok 注解在线帮助文档:https://projectlombok.org/features/index.html

    下面介绍几个我常用的 lombok 注解:

    • @Data :注解在类上;提供类所有属性的 gettingsetting 方法,此外还提供了equalscanEqualhashCodetoString 方法
    • @Setter:注解在属性上;为属性提供 setting 方法
    • @Getter:注解在属性上;为属性提供 getting 方法
    • @Log4j :注解在类上;为类提供一个 属性名为log 的 log4j 日志对象
    • @NoArgsConstructor:注解在类上;为类提供一个无参的构造方法
    • @AllArgsConstructor:注解在类上;为类提供一个全参的构造方法
    • @NonNull:注解在参数上,可以省略重复的 if( null == persion)这类异常处理
    • @Cleanup:注解在输入输出流等需要释放资源的变量上,不需要写额外繁琐而重复的释放资源代码

    不使用lombok

    import java.io.*;
    
    public class CleanupExample {
      public static void main(String[] args) throws IOException {
        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

    import lombok.Cleanup;
    import java.io.*;
    
    public class CleanupExample {
      public static void main(String[] args) throws IOException {
        @Cleanup InputStream in = new FileInputStream(args[0]);
        @Cleanup OutputStream out = new FileOutputStream(args[1]);
        byte[] b = new byte[10000];
        while (true) {
          int r = in.read(b);
          if (r == -1) break;
          out.write(b, 0, r);
        }
      }
    }
    
    • val:最终局部变量,在迭代器循环时刻做简单缩写。

    不使用lombok

    public void example2() {
      final HashMap<Integer, String> map = new HashMap<Integer, String>();
      map.put(0, "zero");
      map.put(5, "five");
      for (final Map.Entry<Integer, String> entry : map.entrySet()) {
        System.out.printf("%d: %s
    ", entry.getKey(), entry.getValue());
      }
    }
    

    使用lombok

    public void example2() {
     val map = new HashMap<Integer, String>();
     map.put(0, "zero");
     map.put(5, "five");
     for (val entry : map.entrySet()) {
       System.out.printf("%d: %s
    ", entry.getKey(), entry.getValue());
     }
    }
    

    下面是简单示例

    不使用 lombok 的方案

    public class Person {
        private String id;
        private String name;
        private String identity;
        private Logger log = Logger.getLogger(Person.class);
        public Person() {
    
        }
    
        public Person(String id, String name, String identity) {
            this.id              = id;
            this.name       = name;
            this.identity  = identity;
        }
    
        public String getId() {
            return id;
        }
    
        public String getName() {
            return name;
        }
    
        public String getIdentity() {
            return identity;
        }
    
        public void setId(String id) {
            this.id = id;
        }
    
        public void setName(String name) {
            this.name = name;
        }
    
        public void setIdentity(String identity) {
            this.identity = identity;
        }
    }
    

    使用 lombok 的方案

    @Data
    @Log4j
    @NoArgsConstructor
    @AllArgsConstructor
    public class Person {
    
        private String id;
        private String name;
        private String identity;
    
    }
    

    参考文档:

  • 相关阅读:
    碰撞检测 :Polygon
    碰撞检测 :Line
    碰撞检测 :Rectangle
    碰撞检测:Point
    Canvas 绘制 1 px 直线模糊(非高清屏)的问题
    threading之线程的开始,暂停和退出
    win10利用hexo+gitee搭建博客
    Fullscreen API与DOM监听API
    <el-input>只能输入数字,保留两位小数
    谷歌浏览器查看gitee和github代码的插件
  • 原文地址:https://www.cnblogs.com/rwxwsblog/p/6077317.html
Copyright © 2020-2023  润新知