Lombok详细笔记
·
lombok介绍
lombok是一个开源的代码生成库,能以简单的注解形式来简化Java类中的大量样板代码,提高开发人员的开发效率。例如开发中经常需要写的javabean,都需要花时间去添加相应的getter/setter,也许还要去写构造器、equals等方法,而且需要维护,当属性多时会出现大量的getter/setter方法,这些显得很冗长也没有太多技术含量。lombok能通过注解的方式,在编译时自动为属性生成构造器、getter/setter、equals、hashcode、toString方法,使代码看起来更简洁。
lombok对应的maven坐标:
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.10</version>
</dependency>
lombok常用注解
注解 | 说明 |
---|---|
@Setter | 注解在类或属性,注解在类时为所有属性生成setter方法,注解在属性上时只为该属性生成setter方法 |
@Getter | 使用方法同@Setter,区别在于生成的是getter方法 |
@ToString | 注解在类,添加toString方法 |
@EqualsAndHashCode | 注解在类,生成hashCode和equals方法 |
@NoArgsConstructor | 注解在类,生成无参的构造方法 |
@RequiredArgsConstructor | 注解在类,为类中需要特殊处理的属性生成构造方法,比如final和被@NonNull注解的属性 |
@AllArgsConstructor | 注解在类,生成包含类中所有属性的构造方法 |
@Data | 注解在类,生成setter/getter、equals、canEqual、hashCode、toString方法,如为final属性,则不会为该属性生成setter方法 |
@Slf4j | 注解在类,生成log变量,用于记录日志 |
@Builder | 将类转变为建造者模式 |
lombok 实战
创建用户类
package com.example.pojo;
import lombok.*;
import lombok.extern.slf4j.Slf4j;
@Setter //创建所有字段的Set方法
@Getter //创建所有字段的Get方法
@NoArgsConstructor //创建无参构造方法
@AllArgsConstructor //创建全参构造方法
@ToString //重写ToString方法
@Builder //开启使用建造者模式创建对象
public class User {
String id;
//@Setter 创建usernae字段的Set方法
String username;
int age;
}
也可以使用@Data
注解替代,但是构造方法无法替代:
package com.example.pojo;
import lombok.*;
import lombok.extern.slf4j.Slf4j;
@Data // 创建setter、getter、equals、canEqual、hashCode、toString方法
@NoArgsConstructor //创建无参构造方法
@AllArgsConstructor //创建全参构造方法
public class User {
String id;
//@Setter 创建usernae字段的Set方法
String username;
int age;
}
建造者模式
// 等价于
//User jay = new User();
//jay.setAge(23);
//jay.setId("10082");
//jay.setUsername("jay");
User jay = User.builder()
.age(23)
.id("10082")
.username("Jay")
.build();
使用@Builder
实际上会在User中加入下面的代码,使用静态内部类的方式提供方法接受外部的值:
public class User {
String id;
String username;
int age;
public static UserBuilder builder(){
return new UserBuilder();
}
public static class UserBuilder{
private String id;
private String username;
private int age;
public UserBuilder id(String id){
this.id = id;
return this;
}
public UserBuilder username(String username){
this.username = username;
return this;
}
public UserBuilder age(int age){
this.age = age;
return this;
}
}
}
总结
- 使用 lombok 插件可以节省大量劳动力代码;
- 可以很方便使用建造者模式;
更多推荐
已为社区贡献2条内容
所有评论(0)