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.總結
不支持多種參數構造器的重載