以前項(xiàng)目中寫model時(shí),都需要添加get、set、toString、hashCode方法,雖然idea有快捷鍵可以快速生成這些代碼,但是代碼會(huì)變得很冗長。通過使用lombok插件的注解可以消除冗余的代碼。get、set、toString、hashCode這些方法可以通過@data注解表示。如果不想使用@data注解,對于get方法可以使用@Setter注解,對于set方法,可以使用@Getter注解,對于toString方法使用@ToString注解。具體更多注解:https://projectlombok.org/features/
這些注解必須通過和@build一起使用,@build注解的作用:可以自動(dòng)生成所需要的代碼,使我們寫的類可以通過代碼實(shí)例化
舉個(gè)例子:
首先使用lomboc插件除了需要在idea中下載相應(yīng)的插件,還需要添加相應(yīng)的依賴:
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.16.18</version>
<scope>provided</scope>
</dependency>
lomboc即是插件又是jar包,編譯加載相應(yīng)時(shí)生成相應(yīng)的方法
model:User.java
@Builder
@Data
public class User {
private String userName;
private String password;
}
直接@data簡單粗暴
測試類:Test.java
public class Test {
public static void main(String[] args) {
User user = new User("a", "b");
System.out.println(user);
System.out.println("password: " + user.getPassword());
}
}
運(yùn)行結(jié)果:
User(userName=a, password=b)
name: b
已經(jīng)被正確實(shí)例化了,并且從結(jié)果中看出,其對toString方法也進(jìn)行了重寫
但是目前為止,我并不是特別喜歡用這個(gè)插件,用起來很不舒服
看我idea中的測試類:

又是紅色波浪線,又是紅色標(biāo)記,真是相當(dāng)惡心,雖然不影響運(yùn)行結(jié)果。

第二天發(fā)現(xiàn)是因?yàn)樽约貉b了插件沒有重啟idea,導(dǎo)致插件沒有使用上
而且這種創(chuàng)建對象的用法并不好。應(yīng)該使用builder進(jìn)行創(chuàng)建
//1.調(diào)用builder方法生成一個(gè)builder對象
//2.調(diào)用userName\password方法初始化值并返回一個(gè)builder對象
//3.調(diào)用build方法生成一個(gè)不可變的User對象
User u = User.builder().userName("dayday").password("123").build();
總結(jié):lombok是一款可以精減java代碼、提升開發(fā)人員生產(chǎn)效率的輔助工具,利用注解在編譯期自動(dòng)生成setter/getter/toString()/constructor之類的代碼