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

一文詳解Java屬性為什么不能是is開頭的boolean

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

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

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

這里先講一下前幾天在工作中,項目遇到的一個問題。庫表中某個字段存入了一個實體類的json字符串,在查詢庫表后,需要將json字符串轉(zhuǎn)為實體類對象進行更改后再轉(zhuǎn)為json字符串后返回給前端。

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

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

首先,我們先定義一個Java實體類,包含一個is開頭的屬性,如isSuccess,再使用idea自動生成的get/set,看看是什么樣子。

public class IsEntity1 {

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

然后再定義一個Java實體類,不是用is開頭的屬性,如success,再使用idea自動生成的get/set,看看是什么樣子。

public class IsEntity2 {

    private boolean success;

    public boolean isSuccess() {
        return success;
    }

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

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

因為當類進行序列化時,有些框架的序列化會根據(jù)JavaBean的屬性進行序列化,而部分框架是根據(jù)JavaBean的getter方法進行序列化,這就會導致在反序列化時與實體類的屬性對應不上。

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

如果非要使用is開頭來定義字段,怎么才能保證json解析過程是正確的呢

答案是自己寫get方法,不用idea自動生成的get方法。

如下:

public boolean getIsSuccess() {
	return isSuccess;
}

這樣,再將實體類轉(zhuǎn)為json字符串時,就會認定isSuccess是字段名。

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

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

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

總結(jié)

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

相關(guān)文章

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

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

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

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

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

    springboot @RequiredArgsConstructor的概念與使用方式

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

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

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

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

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

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

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

    SpringCloud Gateway路由組件詳解

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

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

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

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

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

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

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

最新評論

科技| 洱源县| 改则县| 民丰县| 古蔺县| 三门县| 双流县| 教育| 夹江县| 平谷区| 枣阳市| 饶河县| 抚松县| 金门县| 广德县| 芦溪县| 利辛县| 宁德市| 贵阳市| 陆河县| 三台县| 平江县| 东源县| 蚌埠市| 达尔| 林周县| 宜州市| 绥江县| 泰安市| 河南省| 涟源市| 长宁区| 太谷县| 渭源县| 福贡县| 铜鼓县| 普定县| 灵石县| 彭山县| 东乡| 安义县|