码迷,mamicode.com
首页 > 其他好文 > 详细

lombok插件

时间:2018-08-06 00:41:53      阅读:375      评论:0      收藏:0      [点我收藏+]

标签:alsa   eth   dHash   生成   lsa   new   注解   return   问题   

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注解

lombok插件

标签:alsa   eth   dHash   生成   lsa   new   注解   return   问题   

原文地址:https://www.cnblogs.com/cici20166/p/8491155.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!