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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

lombok插件_lombok插件,让代码更简洁

發(fā)布時(shí)間:2023/12/15 编程问答 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 lombok插件_lombok插件,让代码更简洁 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

是否厭倦了寫一個(gè)實(shí)體類就要重復(fù)使用快捷鍵生成該類的getter,setter,無參有參構(gòu)造?那么lombok插件可以幫你解決這些重復(fù)性勞動(dòng)。之前文章中,也有說到lombok插件,此篇文章就詳細(xì)介紹下lombok插件的使用。

lombok簡介

Lombok想要解決了的是在我們實(shí)體Bean中大量的Getter/Setter方法,以及toString, hashCode等可能不會(huì)用到,但是某些時(shí)候仍然需要復(fù)寫,以期方便使用的方法;在使用Lombok之后,將由其來自動(dòng)幫你實(shí)現(xiàn)代碼生成,注意,其是 在運(yùn)行過程中,幫你自動(dòng)生成的 。就是說,將極大減少你的代碼總量。

注: 無需擔(dān)心lombok會(huì)影響到性能以及效率問題,在編譯的時(shí)候,lombok就只會(huì)一次性將get/set生成在class文件中,跟自己寫get和set方法是無差別的。


IntelliJ IDEA安裝

菜單欄File > Settings > Plugins > Browse repositories > 搜索lombok > install > 重啟

pom依賴

<dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><version>1.18.4</version> </dependency>注: 在@Component類中使用lombok注解時(shí)會(huì)拋出Invalid byte tag in constant pool: 19異常,只需將版本降到1.14.8即可

快速使用

1.編寫一個(gè)實(shí)體類 Person,使用@Data注解

package com.example.joemale.model; import lombok.Data; @Data public class Person {private Integer id;private String name;private Integer age; }

2.編寫測試方法,測試@Data的作用

package com.example.joemale;import com.example.joemale.model.Person; import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.test.context.junit4.SpringRunner;@RunWith(SpringRunner.class) @SpringBootTest @Slf4j public class LombokApplicationTests {@Testpublic void lombokTest() {Person p = new Person();p.setId(1);p.setName("joemale");p.setAge(22);log.info(p.toString());} }

可以看到,我們并沒有編寫getter、setter方法,這里卻可以正常使用,并且還重寫了toString、hashCode、equals方法。

lombok的注解介紹

@NonNull : 讓你不在擔(dān)憂并且愛上NullPointerException

@CleanUp : 自動(dòng)資源管理:不用再在finally中添加資源的close方法

@Setter/@Getter : 自動(dòng)生成set和get方法

@ToString : 自動(dòng)生成toString方法

@EqualsAndHashcode : 從對(duì)象的字段中生成hashCode和equals的實(shí)現(xiàn)

@Data : 自動(dòng)生成set/get方法,toString方法,equals方法,hashCode方法,不帶參數(shù)的構(gòu)造方法

@Value : 用于注解final類

@Builder : 產(chǎn)生復(fù)雜的構(gòu)建器api類

@SneakyThrows : 異常處理(謹(jǐn)慎使用)

@Synchronized : 同步方法安全的轉(zhuǎn)化

@Getter(lazy=true) : 它將在第一次調(diào)用該getter時(shí)計(jì)算一次值,并從那時(shí)起緩存它。

@Log : 支持各種logger對(duì)象,使用時(shí)用對(duì)應(yīng)的注解,如:@Log4j

@NoArgsConstructor/@RequiredArgsConstructor /@AllArgsConstructor:

這三個(gè)注解都是用在類上的,第一個(gè)和第三個(gè)都很好理解,就是為該類產(chǎn)生無參的構(gòu)造方法和包含所有參數(shù)的構(gòu)造方法,

第二個(gè)注解則使用類中所有帶有@NonNull注解的或者帶有final修飾的成員變量生成對(duì)應(yīng)的構(gòu)造方法,當(dāng)然,和前面幾個(gè)注解一樣,成員變量都是非靜態(tài)的,

另外,如果類中含有final修飾的成員變量,是無法使用@NoArgsConstructor注解的。

三個(gè)注解都可以指定生成的構(gòu)造方法的訪問權(quán)限,同時(shí),第二個(gè)注解還可以用@RequiredArgsConstructor(staticName="methodName")的形式生成一個(gè)指定名稱的靜態(tài)方法,返回一個(gè)調(diào)用相應(yīng)的構(gòu)造方法產(chǎn)生的對(duì)象,下面來看一個(gè)例子

@RequiredArgsConstructor(staticName = "sunsfan") @AllArgsConstructor(access = AccessLevel.PROTECTED) @NoArgsConstructor public class Shape {private int x;@NonNullprivate double y;@NonNullprivate String name; }

實(shí)際效果相當(dāng)于:

public class Shape {private int x;private double y;private String name;public Shape(){}protected Shape(int x,double y,String name){this.x = x;this.y = y;this.name = name;}public Shape(double y,String name){this.y = y;this.name = name;}public static Shape sunsfan(double y,String name){return new Shape(y,name);} }

總結(jié)

以上是生活随笔為你收集整理的lombok插件_lombok插件,让代码更简洁的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。