lombok有参构造注解_Java高效开发工具: Lombok
Lombok, 一個Java開發必備效率工具,可以大大避免編寫一些常用方法(get/set, hashcode等),簡化開發。雖然現在IDE很多都可以通過快捷鍵生成POJO的一些方法了,但是如果該POJO字段發生變動后,還是需要程序員再次手動重新生成相關方法。而Lombok只需要使用注解即可,且是在代碼編譯期間將注解替換為相應的代碼,而非通過反射。同時會使得源碼文件更簡潔
配置
IDEA環境下的的Lombok的配置:
1. 首先在Maven中添加Lombok包
<dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><version>1.18.8</version></dependency>2. 在IDEA的Plugins Marketplace 中搜索安裝 IntelliJ Lombok plugin 插件
POJO 方法
POJO類的很多方法get、set、equals、canEquals、hashCode、toString、Constructor 都可以通過Lombok的相關注解實現
@Data 注解
放置在類上,為該類的所有屬性添加get、set方法,為該類添加equals、canEquals、hashCode、toString方法。非常適用于POJO類。
示例源碼如下:
@Data class Pc1 implements Serializable {private static final long serialVersionUID = 1;private int id;private double prcie;private String pcname; }編譯后class文件如下,可以看到提供了上述提到的所有方法,并且源碼依然很簡潔
Note:
如果無構造器方法,Java會提供一個默認的無參構造器。所以class文件中的那個無參構造器可不是Lombok的功勞哦~
@Getter, @Setter 注解
- 放置在屬性上,為該屬性添加Get/Set方法
示例源碼如下:
class Pc2 implements Serializable {private static final long serialVersionUID = 1;private int id;@Setterprivate double prcie;@Getterprivate String pcname; }編譯后class文件如下,可以看到字段上添加了相應的方法
- 放置在類上,則為該類的所有屬性添加Get/Set方法
@EqualsAndHashCode 注解
放置在類上,為該類添加equals、canEqual、hashCode方法
示例源碼如下:
@EqualsAndHashCode class Pc5 implements Serializable {private static final long serialVersionUID = 1;private int id;private double prcie;private String pcname; }編譯后class文件如下,該類添加了equals、canEqual、hashCode方法
@ToString 注解
放置在類上,為該類添加toString方法
示例源碼如下:
@ToString class Pc6 {private int id;private double price;private String pcname; }編譯后class文件如下,該類添加了toString方法
構造器: @AllArgsConstructor 注解
放置在類上,為該類添加一個全參構造器。需要注意的是:由于此時已經有構造器了,Java不再提供無參構造器
示例源碼如下:
@AllArgsConstructor class Pc3 implements Serializable {private static final long serialVersionUID = 1;private int id;private double prcie;private String pcname; }編譯后class文件如下,該類添加了一個全參構造器
構造器: @NoArgsConstructor 注解
放置在類上,為該類添加一個無參構造器
示例源碼如下:
@NoArgsConstructor class Pc4 implements Serializable {private static final long serialVersionUID = 1;private int id;private double prcie;private String pcname; }編譯后class文件如下,該類添加了一個無參構造器
@NonNull
放置在屬性上,將對該屬性進行非空檢查,如果為空(null),將會拋出NullPointerException;同時為該類添加一個由所有@NonNull屬性組成的有參構造器。需要注意的是:由于此時已經有構造器了,Java不再提供無參構造器
示例代碼如下:
@Data class Pc7 {@NonNullprivate Integer id;private double price;private String pcname; }編譯后class文件如下,該類中對id屬性的操作均進行了非空檢查,添加了一個所有@NonNull屬性組成(id屬性)的有參構造器
@RequiredArgsConstructor 注解 簡化依賴注入
通常我們在實現Spring依賴注入,常常是在需要注入的屬性添加@Autowired注解實現(如下所示)。但如果一個類下有很多屬性需要注入時,@Autowired就要寫一堆了……
...@Controllerpublic class Controller1{@Autowiredprivate Service1 service1;@Autowiredprivate Service2 service2;...}這里可以使用這里@RequiredArgsConstructor注解來簡化依賴注入操作:首先需要將該注解放在類上,然后在 需要注入的屬性前添加final(用法1) 或 在需要注入的屬性上添加注解@NonNull(用法2)
對上述示例的改進寫法如下:
...@RequiredArgsConstructor(onConstructor = @__(@Autowired))@Controllerpublic class Controller1{// 用法 1private final Service1 service1;// 用法 2@NonNullprivate Service2 service2;...}用法1 和 用法2 雖然效果一樣,但是很明顯用法1更常用……
log對象
@Log4j
放置在類上,為該類添加一個屬性名為log的Log4J日志對象
示例源碼如下:
@Log4jpublic class Student { private int id;private String username;private String sex;private String address;...}編譯后的class文件如下,該類添加了一個屬性名為log的Log4J日志對象
@Slf4j
放置在類上,為該類添加一個屬性名為log的SLF4J日志對象
示例源碼如下:
import lombok.extern.slf4j.Slf4j;@Slf4jpublic class User {private int id;private String name;private int age;public int getAge() {log.error("SLF4J getAge: " + age );log.debug("SLF4J getAge: " + age );return age;}...}編譯后的class文件如下,該類添加了一個屬性名為log的SLF4J日志對象
總結
以上是生活随笔為你收集整理的lombok有参构造注解_Java高效开发工具: Lombok的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 民生银行信用卡临时额度有效期多长
- 下一篇: wpf 使子ui元素可视区域不超过父元素