美文网首页
lombok:减少常见的,重复的代码开发

lombok:减少常见的,重复的代码开发

作者: 赤子心_d709 | 来源:发表于2017-12-25 15:57 被阅读68次

    背景

    今天学习时突然发现一个@Slf4j这个注解,是来自lombok的
    之前只了解到getter和setter,看到这个于是去学习了一下。

    lombok简介

    在官网上,lombok定了如下多种注解,
    @Cleanup
    @Getter, @Setter
    @EqualsAndHashCode
    @Constructor
    @Data & @Value
    @SneakyThrows
    @Synchronize
    @Getter(lazy=true)
    @Log
    等等,都是为了减少重复开发成本来用的

    demo

    比如针对getter和setter注解,官网的例子就是
    用lombok

    import lombok.AccessLevel;
    import lombok.Getter;
    import lombok.Setter;
    
    public class GetterSetterExample {
      @Getter @Setter private int age = 10;
      
      @Setter(AccessLevel.PROTECTED) private String name;
      
      @Override public String toString() {
        return String.format("%s (age: %d)", name, age);
      }
    }
    

    效果等同于下面这段不用lombok

     public class GetterSetterExample {
    
      private int age = 10;
    
      private String name;
      
      @Override public String toString() {
        return String.format("%s (age: %d)", name, age);
      }
      
      public int getAge() {
        return age;
      }
      
      public void setAge(int age) {
        this.age = age;
      }
      
      protected void setName(String name) {
        this.name = name;
      }
    }
    

    争议

    看了下lombok有争议的地方,主要在于他实现的原理上
    http://jnb.ociweb.com/jnb/jnbJan2010.html#controversy
    http://blog.enixjin.net/why-you-should-not-use-lombok/
    http://blog.csdn.net/ghsau/article/details/52334762
    主要在于他实现的原理(这里我没有深入了解),网上说法是用了

    使用非公开的API,在知道在javac编译代码时
    annotation processor的实例一定是JavacAnnotationProcessor(接口AnnotationProcessor的内部实现)
    直接使用强制类型转换cast。再从JavacAnnotationProcessor的方法里面拿到抽象语法树(AST)做修改。
    

    源码中比如AnnotationProcessorHider.java类就会去修改AST

    个人理解

    个人觉得适量用即可,比如@Log,@Getter,@Setter等即可
    过多的引入,会影响代码的可读性。

    refer

    https://projectlombok.org/features/all 官网
    http://himichaelchu.iteye.com/category/324280 使用demo集合

    争议,原理介绍
    http://jnb.ociweb.com/jnb/jnbJan2010.html#controversy
    http://blog.enixjin.net/why-you-should-not-use-lombok/
    http://blog.csdn.net/ghsau/article/details/52334762

    相关文章

      网友评论

          本文标题:lombok:减少常见的,重复的代码开发

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