最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

一文詳解Java屬性為什么不能是is開(kāi)頭的boolean

 更新時(shí)間:2024年10月08日 10:31:11   作者:spring_root  
在Java實(shí)體類(lèi)定義中,boolean類(lèi)型的屬性命名常引發(fā)爭(zhēng)議,阿里巴巴Java開(kāi)發(fā)手冊(cè)建議避免使用is作為布爾類(lèi)型屬性的前綴,原因在于當(dāng)實(shí)體類(lèi)被序列化或反序列化時(shí),基于JavaBean規(guī)范的框架可能會(huì)移除或忽略is,導(dǎo)致不一致的字段名,文中介紹的非常詳細(xì),需要的朋友可以參考下

通常定義Java實(shí)體類(lèi)時(shí),對(duì)于boolean屬性,阿里規(guī)約中明確要求不能使用is開(kāi)頭。

至于為什么,我們稍后再講。

這里先講一下前幾天在工作中,項(xiàng)目遇到的一個(gè)問(wèn)題。庫(kù)表中某個(gè)字段存入了一個(gè)實(shí)體類(lèi)的json字符串,在查詢(xún)庫(kù)表后,需要將json字符串轉(zhuǎn)為實(shí)體類(lèi)對(duì)象進(jìn)行更改后再轉(zhuǎn)為json字符串后返回給前端。

在這當(dāng)中就出現(xiàn)了一個(gè)問(wèn)題,庫(kù)表中存入的數(shù)據(jù)明明是isUpdate的字段,可是在返回到前端后的代碼就是update
這個(gè)問(wèn)題,起初并沒(méi)有想到是字段定義的問(wèn)題,通過(guò)一步一步的debug,最后才發(fā)現(xiàn)是實(shí)體類(lèi)中isUpdate字段的問(wèn)題,在通過(guò)json解析后就轉(zhuǎn)成了update返回給了前端。

下面講一下,為什么會(huì)出現(xiàn)isUpdate變成update的問(wèn)題。

首先,我們先定義一個(gè)Java實(shí)體類(lèi),包含一個(gè)is開(kāi)頭的屬性,如isSuccess,再使用idea自動(dòng)生成的get/set,看看是什么樣子。

public class IsEntity1 {

    private boolean isSuccess;   
    
    public boolean isSuccess() {
    	return isSuccess;        
    }  
    
    public void setSuccess(boolean success) {
    	isSuccess = success;        
    }   
    
}

然后再定義一個(gè)Java實(shí)體類(lèi),不是用is開(kāi)頭的屬性,如success,再使用idea自動(dòng)生成的get/set,看看是什么樣子。

public class IsEntity2 {

    private boolean success;

    public boolean isSuccess() {
        return success;
    }

    public void setSuccess(boolean success) {
        this.success = success;
    }
    
}

此時(shí),會(huì)發(fā)現(xiàn)無(wú)論你是用is開(kāi)頭或者不用is開(kāi)頭定義屬性,使用idea自動(dòng)生成的get/set都是一個(gè)樣子的,而且在setSuccess的時(shí)候,會(huì)將is省略掉。這里就是項(xiàng)目中遇到的問(wèn)題所在。

因?yàn)楫?dāng)類(lèi)進(jìn)行序列化時(shí),有些框架的序列化會(huì)根據(jù)JavaBean的屬性進(jìn)行序列化,而部分框架是根據(jù)JavaBean的getter方法進(jìn)行序列化,這就會(huì)導(dǎo)致在反序列化時(shí)與實(shí)體類(lèi)的屬性對(duì)應(yīng)不上。

比如說(shuō)將IsEntity1轉(zhuǎn)換為json字符串時(shí),會(huì)根據(jù)實(shí)體類(lèi)中的get方法進(jìn)行序列化取isSuccess的值,而使用idea自動(dòng)生成的get方法直接就是public boolean isSuccess()方法,在取值的時(shí)候會(huì)認(rèn)定success是字段名,就會(huì)取成success,與原來(lái)定義的字段不同。

如果非要使用is開(kāi)頭來(lái)定義字段,怎么才能保證json解析過(guò)程是正確的呢

答案是自己寫(xiě)get方法,不用idea自動(dòng)生成的get方法。

如下:

public boolean getIsSuccess() {
	return isSuccess;
}

這樣,再將實(shí)體類(lèi)轉(zhuǎn)為json字符串時(shí),就會(huì)認(rèn)定isSuccess是字段名。

還有一種方法,就是使用JSONField注解

    @JSONField(name = "isSuccess")
    private boolean isSuccess;

雖然這些方法都可以解決json解析過(guò)程丟失is的問(wèn)題,但是為了避免出現(xiàn)這種問(wèn)題,我們最好還是遵守規(guī)約,不使用is開(kāi)頭定義字段。

總結(jié)

到此這篇關(guān)于Java屬性為什么不能是is開(kāi)頭的boolean的文章就介紹到這了,更多相關(guān)Java屬性不能是is開(kāi)頭的boolean內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • SpringBoot QQ郵箱發(fā)送郵件實(shí)例代碼

    SpringBoot QQ郵箱發(fā)送郵件實(shí)例代碼

    大家好,本篇文章主要講的是SpringBoot QQ郵箱發(fā)送郵件實(shí)例代碼,感興趣的同學(xué)趕快來(lái)看一看吧,對(duì)你有幫助的話記得收藏一下,方便下次瀏覽
    2021-12-12
  • MyBatis參數(shù)處理與查詢(xún)結(jié)果映射實(shí)例詳解

    MyBatis參數(shù)處理與查詢(xún)結(jié)果映射實(shí)例詳解

    本文給大家介紹MyBatis參數(shù)處理與查詢(xún)結(jié)果映射的問(wèn)題,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),感興趣的朋友跟隨小編一起看看吧
    2026-03-03
  • springboot @RequiredArgsConstructor的概念與使用方式

    springboot @RequiredArgsConstructor的概念與使用方式

    這篇文章主要介紹了springboot @RequiredArgsConstructor的概念與使用方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-09-09
  • RabbitMq消息防丟失功能實(shí)現(xiàn)方式講解

    RabbitMq消息防丟失功能實(shí)現(xiàn)方式講解

    這篇文章主要介紹了RabbitMq消息防丟失功能實(shí)現(xiàn),RabbitMQ中,消息丟失可以簡(jiǎn)單的分為兩種:客戶端丟失和服務(wù)端丟失。針對(duì)這兩種消息丟失,RabbitMQ都給出了相應(yīng)的解決方案
    2023-01-01
  • Spring Cloud Gateway實(shí)現(xiàn)流量染色的示例代碼

    Spring Cloud Gateway實(shí)現(xiàn)流量染色的示例代碼

    流量染色是一種在網(wǎng)絡(luò)請(qǐng)求中添加標(biāo)識(shí)字段,本文詳細(xì)介紹了流量染色的原理,并通過(guò)SpringCloudGateway實(shí)現(xiàn)流量染色的方法,具有一定的參考價(jià)值,感興趣的可以來(lái)了解一下
    2026-03-03
  • ssm項(xiàng)目實(shí)現(xiàn)用戶登陸持久化(token)

    ssm項(xiàng)目實(shí)現(xiàn)用戶登陸持久化(token)

    這篇文章主要介紹了ssm項(xiàng)目實(shí)現(xiàn)用戶登陸持久化(token),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-04-04
  • SpringCloud Gateway路由組件詳解

    SpringCloud Gateway路由組件詳解

    SpringCloud Gateway 是 Spring Cloud 的一個(gè)全新項(xiàng)目,它旨在為微服務(wù)架構(gòu)提供一種簡(jiǎn)單有效的統(tǒng)一的 API 路由管理方式。這篇文章主要介紹了SpringCloud Gateway網(wǎng)關(guān)作用,需要的朋友可以參考下
    2023-02-02
  • Java中 this和super的用法與區(qū)別小結(jié)

    Java中 this和super的用法與區(qū)別小結(jié)

    在Java的學(xué)習(xí)與開(kāi)發(fā)者我們經(jīng)常遇到this和super關(guān)鍵字,本文主要介紹了Java中 this和super的用法與區(qū)別小結(jié),具有一定的參考價(jià)值,感興趣的可以了解一下
    2023-12-12
  • Java實(shí)現(xiàn)迷你圖書(shū)管理系統(tǒng)案例全程

    Java實(shí)現(xiàn)迷你圖書(shū)管理系統(tǒng)案例全程

    這篇文章主要為大家詳細(xì)介紹了如何利用java語(yǔ)言實(shí)現(xiàn)簡(jiǎn)單的圖書(shū)管理系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-12-12
  • Java異常處理操作 Throwable、Exception、Error

    Java異常處理操作 Throwable、Exception、Error

    這篇文章主要介紹了Java異常處理操作 Throwable、Exception、Error,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-06-06

最新評(píng)論

青岛市| 秭归县| 兴义市| 徐水县| 原平市| 镶黄旗| 老河口市| 突泉县| 永修县| 洛隆县| 江门市| 兴化市| 英德市| 霸州市| 晋城| 霍林郭勒市| 泾阳县| 柏乡县| 潼南县| 措美县| 汤阴县| 米易县| 绵竹市| 望江县| 平舆县| 镶黄旗| 丰都县| 勃利县| 沙田区| 华宁县| 三亚市| 扎鲁特旗| 吴旗县| 高雄市| 长沙市| 兴和县| 抚宁县| 西林县| 平安县| 三门峡市| 浑源县|