国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

詳解Lombok @ToString() 的使用技巧

開發 前端
不同版本的Lombok可能會改變生成方法的輸出格式。在任何情況下,我們應該避免依賴解析toString()方法輸出的代碼。所以這其實不應該是一個問題。

大家好,我是指北君。

在平時我們工作的時候,我們經常會使用toString()? 方法來輸出一個對象的一些屬性信息。Lombok 給我們提供了一個自動生成 toString()?代碼的注解,可以減少代碼行數,如果代碼屬性比較多的話,可以避免我們些代碼的過程中出現屬性遺漏的問題。本文我們來講講 Lombok 的 ?@ToString()相關內容,以便于我們以后更好的使用 Lombok。

Lombok 的使用

首先我們添加一下 maven 依賴。

<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.22</version>
<scope>provided</scope>
</dependency>

然后我們創建一個 Account 的 class 來演示我們一下我們的各種操作。

@Getter
@Setter
@ToString
public class Account {

private String id;

private String name;

}

默認情況下,我們在調用 Account 的toString() 方法之后,輸出的結果可能如下:

Account(id=12345, name=account)

這是一種比較標準的格式輸出。

Lombok的配置

父類 toString() 的調用

現在假設我們有一個 SavingAccount 的 class 繼承于 Account ,我們調用 SavingAccount 的 toString() 方法時,希望把 Account 的一些屬性也能夠一起輸出, 這個時候我們可以設置 callSupper 屬性來達到我們的目的。

@ToString(callSupper = true)
public class SavingAccount extends Account {
private String savingAccountId;
// 省略 get set
}

上述代碼的操作,就能把父類 Account 的屬性都輸出出來:

SavingAccount(super=Account(id=12345, name=An account), savingAccountId=6789)

省略字段名稱

我們知道默認輸出的時候,會包含字段名稱,我們可以通過設置 includeFieldNames 來控制,是否顯示屬性名稱。

@ToString(includeFieldNames = false)
public class Account {

private String id;

private String name;

// 省略 get set
}

把 includeFieldNames 設置為 false 之后,輸出結果如下

Account(12345, An account)

使用字段代替 Getter

我們知道 getter 方法提供了用于打印的字段值。如果該類不包含某個特定字段的getter方法,那么Lombok會直接訪問該字段并獲取其值。我們可以通過設置 ?doNotUseGetters 屬性為 true,將 Lombok 配置為總是使用直接的字段值而不是getter。

@ToString(doNotUseGetters = true)
public class Account {

private String id;

private String name;

// ignored getter
public String getId() {
return "this is the id:" + id;
}

// standard getters and setters
}

如果沒有這個屬性,我們會得到通過調用getters得到的輸出。

Account(id=this is the id:12345, name=An account)

相反,通過設置doNotUseGetters屬性,輸出實際上顯示了id字段的值,而沒有調用getter。

Account(id=12345, name=An account)

字段的包含和排除

假設我們想從字符串表示中排除某些字段,例如,密碼、其他敏感信息或大的JSON結構。我們可以通過@ToString.Exclude注解來省略這些字段。讓我們把名字字段從我們的表示中排除

@ToString
public class Account {

private String id;

@ToString.Exclude
private String name;

}

或者,我們可以只指定輸出中所需的字段,我可以通過使用 @ToString(onlyExplicitlyIncluded = true) ?和 @ToString.Include來實現。

@ToString(onlyExplicitlyIncluded = true)
public class Account {

@ToString.Include
private String id;

private String name;


}

上述兩種方法,最終輸出,都只能輸出 id 字段。

Account(id=12345)

另外,Lombok 會自動忽略以$ 開頭的變量,但是我們可以通過 @ToString.Include 來強制Lombok輸出。

輸出排序

默認情況下,Lombok 的輸出,是按照字段定義的順序進行輸出的,我可以通過設置 @ToString.Include 來進行排序。我們先修改一下 Account 的字段順序, 然后對 id 進行標記順序。

@ToString
public class Account {

private String name;

@ToString.Include(rank = 1)
private String id;

}

現在 id 字段輸出的時候,會排在 name 的前面

Account(id=12345, name=An account)

Lombok 輸出的規則大致如下:

  • rank 排名越大,排序越靠前
  • 默認的排序值為0
  • 相同的排序通過根據字段定義順序輸出

方法輸出

除了字段之外,我們也可以包括一個不需要參數的實例方法的輸出。我們可以通過用@ToString.Include標記無參數的實例方法來做到這一點。

@ToString
public class Account {

private String id;

private String name;

@ToString.Include
String description() {
return "Account description";
}

}

這里 description 將會作為輸出 key 進行打印輸出。

Account(id=12345, name=An account, description=Account description)

如果指定的方法名稱與字段名稱相匹配,那么該方法就會優先于字段。換句話說,輸出包含方法調用的結果,而不是匹配字段的值。

修改字段名稱

我們可以通過 @ToString.Include 的屬性來修改字段的名稱。

@ToString
public class Account {

@ToString.Include(name = "identification")
private String id;

private String name;

}

現在輸出結果中,將不會包含字段名稱id ,將會輸出 identification。

Account(identification=12345, name=An account)

打印數組

Lombok 使用 Arrays.deepToString() 方法打印數組,將數組元素轉換為其相應的字符串表示。但是數組有可能包含直接引用或間接循環引用。為了避免無限遞歸及其相關的運行時錯誤,該方法將任何從自身內部對數組的循環引用渲染為"``.``.``.``"。讓我們通過給我們的賬戶類添加一個對象數組字段來看看。

@ToString
public class Account {

private String id;

private Object[] relatedAccounts;

}

這 relatedAccounts 數組的打印如下

Account(id=12345, relatedAccounts=[54321, [...]])

重要的是,循環引用被deepToString()方法檢測到,并且被Lombok適當地呈現出來,沒有引起任何StackOverflowError。

有一些注意點

有幾個細節值得一提,對避免產生意外的結果很重要。

  • 在類中存在任何名為toString()的方法(不管返回類型如何),Lombok不會生成其 toString() 方法。
  • 不同版本的Lombok可能會改變生成方法的輸出格式。在任何情況下,我們應該避免依賴解析toString()方法輸出的代碼。所以這其實不應該是一個問題。
  • 我們還可以在枚舉上添加這個注解。這將產生一個枚舉值跟隨枚舉類名稱的表示,例如,AccounType.SAVING。
責任編輯:武曉燕 來源: Java技術指北
相關推薦

2019-11-27 10:05:00

LombokJava編程

2009-09-04 10:45:18

MyEclipse使用

2009-12-04 10:19:11

PHP hack

2023-02-01 08:22:37

2009-08-17 08:42:48

LinuxScreen命令使用技巧

2022-12-22 07:40:28

2023-10-31 08:22:31

線程類型.NET

2021-09-29 06:03:37

JavaScriptreduce() 前端

2009-07-31 17:51:42

linux vi命令詳linux vi命令編輯器

2022-12-23 07:36:50

RedisLettuce技巧

2009-12-07 10:54:46

PHP uploade

2022-12-27 07:39:28

RedisRedissonLettuce

2016-10-12 13:37:09

LombokIDEidea

2022-04-15 08:30:00

Lombok@Builde構建器

2023-09-25 13:19:41

pandasPython

2011-01-19 14:39:59

Qmail技巧

2011-04-01 10:53:43

2011-01-21 14:30:02

Thunderbird技巧

2025-01-10 12:00:00

LombokMavenGradle

2009-12-10 13:27:23

GNOME桌面
點贊
收藏

51CTO技術棧公眾號

欧美色道久久88综合亚洲精品| 欧美另类久久久品| 成人美女免费网站视频| 五月天色婷婷综合| 亚洲美女久久精品| 欧美午夜无遮挡| 亚洲这里只有精品| 精品日本12videosex| 欧美成人精品影院| 欧美人体一区二区三区| 精品国产免费视频| 先锋影音在线资源站91| 欧美精品亚洲二区| 黄色在线观看网站| 国产综合色视频| 色综合亚洲精品激情狠狠| 顶级网黄在线播放| 91精品国产色综合久久ai换脸 | 濑亚美莉vs黑人在线观看| 99er精品视频| 国产精品国产精品国产专区不蜜| 欧美成年人网站| 成人全视频免费观看在线看| 日本一区二区动态图| 成人免费无码av| 小说区亚洲自拍另类图片专区| 国产91成人在在线播放| 日韩精品视频一区二区三区| 九九久久精品一区| 日韩一二三区| 国产精品69精品一区二区三区| 日本大臀精品| 91福利视频久久久久| 麻豆av电影在线观看| 在线观看网站黄不卡| 日本成人性视频| 国模一区二区三区白浆| 成人国产一区二区三区| 国产精品45p| 欧洲一区二区视频| 久久久久亚洲| 麻豆久久久av免费| 国产精品毛片无码| 欧美激情videos| 日韩毛片在线一区二区毛片| 一本色道久久加勒比精品| 成人黄视频在线观看| 日韩精品久久久久久久玫瑰园| 欧洲一级精品| 日韩精品麻豆| 日韩大陆毛片av| 99综合99| 成人乱人伦精品视频在线观看| 国产欧美日韩亚洲一区二区三区| 伊人情人网综合| 日韩在线精品强乱中文字幕| 69影院欧美专区视频| 色多多视频在线观看| 亚洲天堂av女优| 国产欧美一区| 亚洲亚裔videos黑人hd| 亚洲成av人片在线观看www| 国产一区二区香蕉| 国产综合久久久久久鬼色| 国产激情三区| 日韩欧美不卡一区| 国内精品偷拍| 亚洲高清乱码| 亚洲最新在线观看| 欧美精选视频一区二区| 91精品中国老女人| 99久久精品情趣| av在线之家电影网站| 一区二区在线观看视频| 国产成人l区| 久久久综合av| 奇米亚洲午夜久久精品| 99在线观看视频| 日本欧美高清| 亚洲国产午夜伦理片大全在线观看网站| 国产精品不卡在线观看| 草草在线视频| 91美女福利视频高清| 91视视频在线直接观看在线看网页在线看| 国产资源在线看| 欧美精品久久久久久久久| 久久精品国产福利| 午夜精品视频| 日本公妇乱淫免费视频一区三区| 综合天天久久| 青青青免费在线| 欧美高清性hdvideosex| 亚洲人成网www| 国模无码视频一区二区三区| 欧美一区二区三区视频免费播放 | 免费免费啪视频在线观看| 日韩电视剧在线观看免费网站| 久久中文视频| 99热免费在线| 日韩中文视频免费在线观看| 三级影片在线观看欧美日韩一区二区 | 成人av综合在线| yw193.com尤物在线| 2018日韩中文字幕| 成人国产精品视频| 国产啊啊啊视频在线观看| 成人片在线免费看| 亚洲一区免费观看| 日韩欧美中文字幕一区二区三区| 裸体裸乳免费看| 91精品国产aⅴ一区二区| 亚洲国产一成人久久精品| 制服影音先锋| 国模私拍视频一区| va亚洲va日韩不卡在线观看| 成人视屏在线观看| 91网站在线观看免费| 亚洲欧美三级伦理| 国产九色精品成人porny| 欧美亚洲日本精品| 在线观看一区欧美| 亚洲精品永久免费| 国产成人av电影在线播放| 韩国成人在线| 欧美 日韩 国产在线观看| www.亚洲天堂| 久久久久久久久久久久久夜| 你懂的av在线| 亚洲一二在线观看| 国产成人99久久亚洲综合精品| 91av亚洲| 日本a级片在线播放| 精品久久国产字幕高潮| 日本免费新一区视频| 久久五月精品中文字幕| 久久精品成人一区二区三区蜜臀| 欧美日韩的一区二区| 久久一区国产| 亚洲校园激情春色| 日本www在线播放| 免费97视频在线精品国自产拍| 久久精品人人做人人综合 | 久久欧美一区二区| 天海翼一区二区三区四区在线观看| 国产69久久精品成人看| 亚洲美女区一区| 97影院秋霞午夜在线观看| 国模精品一区二区三区| 91精品国产综合久久久蜜臀图片 | 巨大荫蒂视频欧美另类大| 午夜精品电影在线观看| 亚洲人成网在线播放| 久久网站最新地址| 国产精品调教视频| 性感av在线播放| 久久国产精品一区二区三区| 亚洲美女黄色片| 日本一区二区三区四区| 久久成人综合| 免费黄网在线观看| 久久精品久久久久电影| 99九九热只有国产精品| av色图一区| 欧美人交a欧美精品| 一区二区三区在线观看欧美| 国产综合网站| 欧美日韩中文不卡| 成人性生交xxxxx网站| 欧美α欧美αv大片| av动漫一区二区| 清纯唯美日韩| av电影在线免费| 成人免费视频网址| 日韩欧美三级在线| 26uuu久久天堂性欧美| 欧美限制电影| 国产传媒在线| 成人毛片免费在线观看| 国产一区二区中文字幕免费看| 亚洲一级黄色片| 亚洲3atv精品一区二区三区| 美女脱光内衣内裤视频久久网站| 9l视频自拍蝌蚪9l视频成人| 中国老女人av| 日韩免费观看在线观看| 欧美电影免费观看完整版| 中文无字幕一区二区三区 | 国产精品自拍偷拍| youjizz久久| 日本不卡高清| 浪潮色综合久久天堂| 在线观看你懂得| 国模精品一区二区三区色天香| 在线观看91视频| 久久久美女毛片| 亚洲影音一区| 九九热线有精品视频99| 99免费视频| 亚洲最大免费| 欧美成人综合网站|