美文网首页
LomBok教程v0.1

LomBok教程v0.1

作者: 刘军颖 | 来源:发表于2019-05-25 12:02 被阅读0次

LomBok教程v0.1

lombok是一个帮助JAVA开发者快速的完成机械性运动编码的重复性工作的替代品,他帮助用户完成了过去需要右键或者敲打才能填写补充的get,set,toString等常用的属性方法,构造器这种没有技术含量的工作!
整理者:sulwan

相关知识

equals() 的作用是 用来判断两个对象是否相等
==: 它的作用是判断两个对象的地址是不是相等
hashCode() 的作用是获取哈希码,也称为散列码;它实际上是返回一个int整数。这个哈希码的作用是确定该对象在哈希表中的索引位置。

更多了解请看:

https://www.cnblogs.com/skywang12345/p/3324958.html
https://zhuanlan.zhihu.com/p/32779910

安装LomBok

Lombok安装分为项目安装,以及编辑器安装两部分:

①编辑器安装

​ eclipse:
​ 下载插件(https://projectlombok.org/download),保存于eclipse目录,并在eclipse.ini文件最末端添加:

    -javaagent:lombok.jar

    -Xbootclasspath/a:lombok.jar

重启eclipse,即完成安装。

​ idea:

​ 可以在线安装lombok的插件
settings -> plugins -> 在搜索框输入lombok -> 安装

②项目安装

<!-- https://mvnrepository.com/artifact/org.projectlombok/lombok -->
<dependency>
    <groupId>org.projectlombok</groupId>
    <artifactId>lombok</artifactId>
    <version>1.18.8</version>
    <scope>provided</scope>
</dependency>

LomBok常用API

@Setter

注解在类或字段,注解在类时为所有字段生成setter方法,注解在字段上时只为该字段生成setter方法。

@Setter
public class Sulwan{
    private Long id;
}

public class Sulwan{
    private Long id;
    public Sulwan(){
    }
    public Long setId(Long id){
        this.id = id;
    }
    
}

@Getter

使用方法同上,区别在于生成的是getter方法。

@Getter
public class Sulwan{
    private Long id;
}

public class Sulwan{
    private Long id;
    public Sulwan(){
    }
    public Long getId(){
        return this.id;
    }
    
}

@ToString

注解在类,添加toString方法。

@ToString
public class Sulwan{
    private Long id;
}

public class Sulwan{
    private Long id;
    public String toString(){
        .........
    }
    
}

@EqualsAndHashCode

注解在类,生成hashCode和equals方法。

@EqualsAndHashCode
public class Sulwan{
    private Long id;
}

public class Sulwan{
    private Long id;
    public int hashCode() {
        .........
    }

    public boolean equals(Object obj) {
        .........
    }
    
}

@NoArgsConstructor

注解在类,生成无参的构造方法。

@NoArgsConstructor
public class Sulwan{
    private Long id;
}

public class Sulwan{
    private Long id;
    public Sulwan(){
    }
}

@RequiredArgsConstructor

注解在类,为类中需要特殊处理的字段生成构造方法,比如final和被@NonNull注解的字段。

正如文字介绍那样,就是专门给这俩个情况生成构造函数的,哥们我没用过,感觉建议不要用!

@AllArgsConstructor

注解在类,生成包含类中所有字段的构造方法。特别要注意,不在生成默认构造

@NoArgsConstructor
public class Sulwan{
    private Long id;
}

public class Sulwan{
    private Long id;
    @ConstructorProperties({"id"})
    public Sulwan(Long id){
        this.id = id
    }
}

@Data

注解在类,生成setter/getter、equals、canEqual、hashCode、toString方法,如为final属性,则不会为该属性生成setter方法。

@Data
public class Sulwan{
    private Long id;
}

public class Sulwan{
    private Long id;
    public Sulwan(){
    }
    public Long getId(){
        return this.id;
    }
    public Long setId(Long id){
        this.id = id;
    }
   
    public int hashCode() {
        .........
    }

    public boolean equals(Object obj) {
        .........
    }
    
    public String toString(){
        .........
    }
    
}

@Slf4j

注解在类,生成log变量,严格意义来说是常量。
private static final Logger log = LoggerFactory.getLogger(sulwanController.class);

@Log4j

注解在类上;为类提供一个 属性名为log 的 log4j 日志对像 和上边的一样

@Log4j
public class Sulwan{
    private Long id;
}

public class Sulwan{
    private Long id;
    private static final Logger log =  LoggerFactory.getLogger(Sulwan.class)
    public Sulwan(){
    }
    
}

@NonNull

注解在 属性 上,会自动产生一个关于此参数的非空检查,如果参数为空,则抛出一个空指针异常,也会有一个默认的无参构造方法

public class Sulwan{
    @NonNull
    private Long id;
}

public class Sulwan{
    @NonNull
    private Long id;
}

@Cleanup

这个注解用在 变量 前面,可以保证此变量代表的资源会被自动关闭,默认是调用资源的 close() 方法,如果该资源有其它关闭方法,可使用@Cleanup(“methodName”) 来指定要调用的方法,也会生成默认的构造方法。

在类中引用其他类的前边增加这个注解,就会在使用完毕后finally关闭这个,他是附着在try

@Value

这个注解用在 上,会生成含所有参数的构造方法,get 方法,此外还提供了equalshashCodetoString方法。

这个个人观点就是Data注解的别名,以后知道区别在使用

@SneakyThrows

这个注解用在 方法 上,可以将方法中的代码用 try-catch 语句包裹起来,捕获异常并在 catch 中用 Lombok.sneakyThrow(e) 把异常抛出,可以使用 @SneakyThrows(Exception.class) 的形式指定抛出哪种异常,也会生成默认的构造方法。

注解在那个方法,其实就是给那个方法的方法体增加了一个指定异常try....catch

@Synchronized

这个注解用在 类方法 或者 实例方法 上,效果和 synchronized 关键字相同,区别在于锁对象不同,对于类方法和实例方法,synchronized 关键字的锁对象分别是类的 class 对象和 this 对象,而 @Synchronized 的锁对象分别是 私有静态 final 对象 lock私有 final 对象 lock,当然,也可以自己指定锁对象,此外也提供默认的构造方法。

防止多线程的锁???以后使用多了在完成

相关文章

网友评论

      本文标题:LomBok教程v0.1

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