zoukankan      html  css  js  c++  java
  • lombok插件

    1.Lombok插件使用注解的方式,在代码编译阶段按照一定的规则生成类的setter/getter/constructor/equals/hashCode等方法

    2.首先新建一个实体类,这里新建User.java

    3.@Setter @Getter 注解

      1)用在类上

    @Setter @Getter
    public class User {...}
    

       编译之后的User.class自动生成了属性id的setter和getter

    public class User {
        private String id;
    
        public User() {
        }
    
        public void setId(String id) {
            this.id = id;
        }
    
        public String getId() {
            return this.id;
        }
    }
    2)用在方法上,生成的class文件和用在类上是一样的
    public class User {
        @Setter @Getter
        private String id;
    }
    @Setter和@Getter的value属性:设置setter和getter的访问级别,默认值是 AccessLevel.PUBLIC;
    @Setter(value = AccessLevel.PRIVATE)
    

      

    @Setter(AccessLevel.PRIVATE)
    

     @Setter & @Getter的onMethod属性:在注解中使用其他组件的注解(如hibernate,mybatis等)

      源文件:

    import lombok.AccessLevel;
    import lombok.Getter;
    import lombok.Setter;
    
    import javax.persistence.Column;
    
    public class User {
        @Setter(onMethod = @_(@Column(name="user_id"))) @Getter
        private String id;
    }
    

      User.class:其中@column注解便是使用@setter(onMethod=xx)进行方法注解的

    import javax.persistence.Column;
    
    public class User {
        private String id;
    
        public User() {
        }
    
        @Column(
            name = "user_id"
        )
        public void setId(String id) {
            this.id = id;
        }
    
        public String getId() {
            return this.id;
        }
    }
    

     @Getter的lazy属性:一般用在private final的缓存属性上,lazy默认是false,如果设置为true,则会在实际使用到缓存的时候才会生成缓存,并且Lombok会自动处理线程安全的问题。

    User.java
    public class User {
        @Getter(lazy = true)
        private final Map cache = initXXCatch();
        private Map initXXCatch(){
            return  new HashMap();
        }
    }
    
    User.class
    lazy=true  
      private final AtomicReference<Object> cache = new AtomicReference();
    
      public Map getCache() {
            Object value = this.cache.get();
            if (value == null) {
                AtomicReference var2 = this.cache;
                synchronized(this.cache) {
                    value = this.cache.get();
                    if (value == null) {
                        Map actualValue = this.initXXCatch();
                        value = actualValue == null ? this.cache : actualValue;
                        this.cache.set(value);
                    }
                }
            }
    
            return (Map)((Map)(value == this.cache ? null : value));
        }
    
    lazy=false生成的getter:
    private final Map cache = this.initXXCatch(); public Map getCache() { return this.cache; }

    @Setter的onParam属性:这个注解和onMethod一样,也是在注解中加入注解

    4.@NonNull注解:

    5.@ToString注解

    6.@EqualsAndHashCode注解

    7.@Data注解

    8.@Synchronized注解

    9.@SneakyThrows注解

  • 相关阅读:
    DSP Builder设计一个滤波器
    Modelsim 10.0 对Altera FFT IP 进行仿真
    FPGA内部计算小数
    TIOBE 2012年3月编程语言排行榜:JS超越Perl和Python
    转载 10个新鲜的Ajax相关的jQuery插件
    转载 使用HTML5、CSS3和jQuery增强网站用户体验
    转载 Java堆内存的10个要点
    累 腾讯笔试
    python 浮点数取整
    转载 一个页面重构工程师眼中的“用户体验”
  • 原文地址:https://www.cnblogs.com/cici20166/p/8491155.html
Copyright © 2011-2022 走看看