当前位置 : 首页 » 文章分类 :  开发  »  Lombok

Lombok

Lombok 笔记
https://projectlombok.org

Lombok:让JAVA代码更优雅
http://blog.didispace.com/java-lombok-1/


常用注解

@Data

注解在类上;提供类所有属性的 getting 和 setting 方法,此外还提供了equals、canEqual、hashCode、toString 方法
@Data 是 @Getter、 @Setter、 @ToString、 @EqualsAndHashCode 和 @RequiredArgsConstructor 的快捷方式。

@NoArgsConstructor

注解在类上;为类提供一个无参的构造方法

@AllArgsConstructor

注解在类上;为类提供一个全参的构造方法

@RequiredArgsConstructor

注解在类上;为类提供一个必要参数的构造方法
什么是必要参数?
1、未初始化的 final 修饰的成员变量
2、@NonNull 修饰的成员变量

另外,如果所有的属性都没有final修饰的话,使用 @RequiredArgsConstructor 会生成一个无参的构造器。

@Buidler 建造者模式

实现建造者模式

当你使用 @Builder 注解 User 类时, Lombok 会执行以下操作:
加一个私有构造函数到 User
创建一个静态的 UserBuilder 类
在 UserBuilder 中为 User 中的每个成员创建一个 setter 风格方法
在 UserBuilder 中添加创建 User 的新实例的建造方法

@SuperBuilder 继承父类属性的构造器

@Buidler 只能针对当前类的 field 生成构造器,无法继承父类的 field, 即使给父类也添加 @Builder 注解也依然不能通过链式调用给父类 field 赋值。
Lombok 在 v1.18.2 版本中针对这个问题增加了 @SuperBuilder 注解,子类和父类中都添加 @SuperBuilder 注解,子类 builder 即可继承父类builder。

@SLF4J

private static final org.slf4j.Logger log = org.slf4j.LoggerFactory.getLogger(LogExample.class);

@UtilityClass 标识工具类

工具类中所有方法都必须是 static 的,不能有任何实例

https://projectlombok.org/features/experimental/UtilityClass


问题

编译错误:无法将类 A 中的构造器 A应用到给定类型

java重要特性:子类除了拥有自己的特性外还拥有父类的特性。
因此在初始化子类的时候,父类也要被初始化。
比如定义了类

class A {
  //这样系统不会为类A自动加上无参的构造函数
  public A(int x){}
}

class B extends A {
  //这样系统会自动为B加上无参的构造函数,而且在这个构造函数里有一句话super();
}

所以编译时,A编译通过,但是编译B时会提示无法将A中的构造器应用到给定的类型,因为 super() 找不到A中的无参构造器

解决方法:
一、在A中加入无参的构造方法
二、在B中的所有构造方法的第一句话写上super(int);

无法将构造器应用到给定的类型
https://blog.csdn.net/songxueyu/article/details/14447201


IDEA安装lobbok插件

定位到 File > Settings > Plugins
点击 Browse repositories…
搜索 Lombok Plugin
点击 Install plugin
重启 IDEA


上一篇 Prometheus监控

下一篇 Apache-Commons-Pool 使用笔记

阅读
评论
698
阅读预计3分钟
创建日期 2019-09-14
修改日期 2020-12-27
类别
标签

页面信息

location:
protocol:
host:
hostname:
origin:
pathname:
href:
document:
referrer:
navigator:
platform:
userAgent:

评论