1.lombok是啥
是java库,它会自动插入编辑器和构建工具中,提供的注解,用来消除Java类中的大量样板代码。让代码变得干净,简洁且易于维护。
2.使用
1)maven引入
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.16.6</version>
<scope>provided</scope>
</dependency>
2)下载jar包--https://projectlombok.org/download
3.注解应用(官方文档:https://projectlombok.org/features)
1)val(var在1.16.20)
用于局部变量,相当于final
2)@Data
类注解,包含@ToString ,@EqualsAndHashCode,@Getter,@Setter,@RequiredArgsConstrutor 作用
3)@NonNull
属性或构造器,非空声明
4)@Cleanup
自动调用close()方法
//使用注解
public class CleanupExample {
public static void main(String[] args) throws IOException {
@Cleanup InputStream in = new FileInputStream(args[0]);
@Cleanup OutputStream out = new FileOutputStream(args[1]);
byte[] b = new byte[10000];
while (true) {
int r = in.read(b);
if (r == -1) break;
out.write(b, 0, r);
}
}
}
//无注解
public class CleanupExample {
public static void main(String[] args) throws IOException {
InputStream in = new FileInputStream(args[0]);
try {
OutputStream out = new FileOutputStream(args[1]);
try {
byte[] b = new byte[10000];
while (true) {
int r = in.read(b);
if (r == -1) break;
out.write(b, 0, r);
}
} finally {
if (out != null) {
out.close();
}
}
} finally {
if (in != null) {
in.close();
}
}
}
}
5)@Value
类注解,是@Data不可变形式,相当于为属性添加final声明,只提供getter方法,不提供setter
6)@Builder
类,构造器,方法注解
User user = User.builder()
.account(driverAddRequest.account)
.password(driverAddRequest.password)
.name(driverAddRequest.name)
.detailAddr(driverAddRequest.detailAddr)
.status("Y")
.build();
7)Synchronized
方法上:声明同步,自动加锁
4.总结
不支持多种参数构造器的重载