Lombok是一個可以通過注解的形式可以幫助消除一些必須但是顯得很臃腫的Java代碼的工具,通過使用對應的注解,可以在進行編譯源碼的時候生成對應的方法,比如類屬性的get/set/toString()/類的構造方法等.
下面記錄一下在Mac Eclipse是如何安裝Lombok
1、下載相應的Jar包lombok.jar,下載地址:https://projectlombok.org/download
2、將Lombok集成到Eclipse
(1)Lombok復制到Eclipse.app/Contents/Eclipse目錄下;
(2)將如下內容添加到eclipse.ini尾部
1 2 |
|
3、重啟Eclipse即可。
下面記錄一下常用的注解
1、在Maven項目中引入Lombok的Jar
<!-- https://mvnrepository.com/artifact/org.projectlombok/lombok -->
<dependency>
? ? <groupId>org.projectlombok</groupId>
? ? <artifactId>lombok</artifactId>
? ? <version>1.16.20</version>
? ? <scope>provided</scope>
</dependency>
2、使用注解
@Data
public class User {
? ??
? ? private int id;
? ??
? ? private String userName;
? ??
? ? private Date birthday;
}
@Setter 和 @Getter
注解在屬性上(當然也可以使用在類上面)為屬性提供 setting 方法,默認生成的方法是public的,如果要修改可以設置AccessLever。如下
public class User {
? ??
? ? @Getter(AccessLevel.PRIVATE) @Setter private int id;
? ??
? ? @Getter @Setter private String userName;
? ??
? ? @Getter @Setter private Date birthday;
}
?
@ToString
注解在類上,生成toString()方法,默認情況下,它會按順序(以逗號分隔)打印你的類名稱以及每個字段。可以這樣設置不包含哪些字段@ToString(exclude="id"),如果有多個可是是@ToString(exclude={"id","name"}),如果有繼承父類的化,可以讓其調用父類的toString(),如@ToString(calllSuper = true)
@ToString(exclude = "id")
public class User {
? ??
? ? @Getter(AccessLevel.PRIVATE) @Setter private int id;
? ??
? ? @Getter @Setter private String userName;
? ??
? ? @Getter @Setter private Date birthday;
}
@NoArgsConstructor, @RequiredArgsConstructor, @AllArgsConstructor
@NoArgsConstructor生成一個無參構造方法。當類中有final字段沒有被初始化時,編譯器會報錯,此時可用@NoArgsConstructor(force = true),然后就會為沒有初始化的final字段設置默認值 0 / false / null。對于具有約束的字段(例如@NonNull字段),不會生成檢查或分配,因此請注意,正確初始化這些字段之前,這些約束無效。
@RequiredArgsConstructor會生成構造方法(可能帶參數也可能不帶參數),如果帶參數,這參數只能是以final修飾的未經初始化的字段,或者是以@NonNull注解的未經初始化的字段
@RequiredArgsConstructor(staticName = "of")會生成一個of()的靜態方法,并把構造方法設置為私有的
? ? @AllArgsConstructor 生成一個全參數的構造方法
@Data
同時生成@Getter @Setter @ToString @RequiredArgsConstructor等功能。
?
@Synchronized
給方法添加同步鎖Synchronized
?
更多參看官方文檔?https://projectlombok.org/features/all