推荐一款代码神器,代码量至少省一半!
在我們 Java 項目里面,有很多 Java Bean 需要為每個屬性生成 get/ set 方法,增刪改屬性都需要維護這些 get/ set 方法甚是麻煩。
今天給大家介紹一款能幫助我們簡化這些代碼的神器:Lombok!有了這個神器,你的 Java Bean 類的代碼量至少可以省一半。
什么是Lombok?
https://www.projectlombok.org/
打開它的官網,這是它的簡介。
Project Lombok is a java library that automatically plugs into your editor and build tools, spicing up your java.
Never write another getter or equals method again. Early access to future java features such as val, and much more.
翻譯過來就是說,Lombok項目是一個 Java 庫,它能夠自動嵌入到你的 IDE 編輯器和編譯工具中。有了它,你再也不用寫 getter 或者 equals 方法了,還有 val 特性等。
總之,有了這個家伙,可以省掉很多代碼的編寫,大大減少了工作量和維護的難度。
如何使用Lombok?
1、安裝插件和配置依賴
如上圖所示,Lombok支持所有主流的 IDE 開發工具及編譯構建工具。
在 IDEA 中安裝 Lombok 插件,這樣在使用 Lombok 的時候就不會編譯報錯。
下面是 Maven 的依賴配置,在用 Maven 打包的時候也能自動生成需要的代碼。
<dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><version>1.18.2</version><scope>provided</scope> </dependency>如果你使用了 Spring Boot,可以不用帶版本號,在 Spring Boot?spring-boot-dependencies.pom?這個配置文件里面定義了 Lombok 依賴。
所以,你只需要繼承版本號即可,當然,有必要的話,你也可以自定義版本號。
<dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><scope>provided</scope> </dependency>2、使用注解簡化代碼
從 IDEA 中的 Lombok 插件特性可以看到支持的注解。
Features @Getter?and?@Setter @FieldNameConstants @ToString @EqualsAndHashCode @AllArgsConstructor,?@RequiredArgsConstructor?and?@NoArgsConstructor @Log,?@Log4j,?@Log4j2,?@Slf4j,?@XSlf4j,?@CommonsLog,?@JBossLog,?@Flogger @Data @Builder @Singular @Delegate @Value @Accessors @Wither @SneakyThrows from?Intellij?14.1?@val from?Intellij?15.0.2?@var from?Intellij?14.1?@var from?Intellij?2016.2?@UtilityClass Lombok?config?system Code?inspections Refactoring?actions?(lombok?and?delombok)也可以去 Lombok 對應的包里面看所有支持的注解。
現在挑幾個講一下它們的用法吧!
@Getter 和 @Setter
@Getter @Setter public?class?User?{private?String?name;private?int?age;...//?無需生成?get/set?方法}添加?@Getter?和?@Setter?注解用在 Java Bean 類上面,無需生成 get/ set 方法,會自動生成所有的 get/ set 方法及一個默認的構造方法。
也可以用插件來添加相應的注解。
來看下源碼和生成后的代碼對比。
@Getter?和?@Setter?注解也可以單獨使用在字段上面,同樣也會生成對應的 get/ set 方法及一個默認的構造方法。
@ToString
使用在類上,默認生成所有非靜態字段以下面的格式輸出,如:
public?String?toString(){return?"Person(userName="?+?getUserName()?+?",?id="?+?getId()?+?",?age="?+?getAge()?+?",?address="?+?getAddress()?+?",?memo="?+?getMemo()?+?")"; }里面也有很多參數,用來自定義輸出格式。
@NoArgsConstructor
用在類上,用來生成一個默認的無參構造方法。
@RequiredArgsConstructor
用在類上,使用類中所有帶有?@NonNull?注解和?final?類型的字段生成對應的構造方法。
@AllArgsConstructor
用在類上,生成一個所有參數的構造方法,默認不提供無參構造方法。
@Data
用在類上,等同于下面這幾個注解合集。
-
@Getter
-
@Setter
-
@RequiredArgsConstructor
-
@ToString
-
@EqualsAndHashCode
@Value
用在類上,等同于下面這幾個注解合集。
-
@Getter
-
@FieldDefaults(makeFinal=true, level=AccessLevel.PRIVATE)
-
@AllArgsConstructor
-
@ToString @EqualsAndHashCode}
@NonNull
用在屬性上,用于字段的非空檢查,如果傳入到 set 方法中的值為空,則拋出空指針異常,該注解也會生成一個默認的構造方法。
還有很多,這里不再撰述。
總結
本文介紹了 Lombok 及使用說明,更多的注解使用方式可以去源碼里面看吧,有了這個插件,可以幫助你寫出更簡潔、更優雅、更漂亮的 Java 代碼。
總結
以上是生活随笔為你收集整理的推荐一款代码神器,代码量至少省一半!的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 大型网站架构演进的五大阶段盘点
- 下一篇: MySQL InnoDB 锁介绍及不同