日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

lombok有参构造注解_Java高效开发工具: Lombok

發布時間:2023/12/10 java 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。