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
方法,此外还提供了equals
、hashCode
、toString
方法。
这个个人观点就是Data注解的别名,以后知道区别在使用
⑮@SneakyThrows
这个注解用在 方法 上,可以将方法中的代码用 try-catch 语句包裹起来,捕获异常并在 catch 中用 Lombok.sneakyThrow(e)
把异常抛出,可以使用 @SneakyThrows(Exception.class)
的形式指定抛出哪种异常,也会生成默认的构造方法。
注解在那个方法,其实就是给那个方法的方法体增加了一个指定异常try....catch
⑯@Synchronized
这个注解用在 类方法 或者 实例方法 上,效果和 synchronized 关键字相同,区别在于锁对象不同,对于类方法和实例方法,synchronized 关键字的锁对象分别是类的 class 对象和 this 对象,而 @Synchronized 的锁对象分别是 私有静态 final 对象 lock 和 私有 final 对象 lock,当然,也可以自己指定锁对象,此外也提供默认的构造方法。
防止多线程的锁???以后使用多了在完成
网友评论