記java實體類屬性名為全部為大寫踩的坑(基礎)


1.今天后台使用實體類接收參數,然后有個參數發現明明前后都是對應的,但是那個屬性偏偏的不到數據

后面百度才知道(寫前端太久java基礎都給忘了,該補補了)

 

spring默認的命名方式為,首字母轉小寫,連續大寫字母都轉成了小寫

恍然大悟:也就是說當我實體類自動為SN時,get方法getSN也就相當於get,sn這個字段,set方法getSN也就相當於set,sn這個字段,就會導致跟字段SN不對應,導致無法注入值

這時候其實有解決的辦法,就是get,set方法添加@JsonPropety("屬性名")解決

 

Java的規范是首字母小寫的然后駝峰命名

看源碼后發現

public static String decapitalize(String s) 
    { 
        if(s == null || s.length() == 0) 
            //空處理 
            return s; 
        if(s.length() > 1 && Character.isUpperCase(s.charAt(1)) && Character.isUpperCase(s.charAt(0))){ 
            //長度大於1,並且前兩個字符大寫時,返回原字符串 
            return s; 
        } else{ 
            //其他情況下,把原字符串的首個字符小寫處理后返回 
            char ac[] = s.toCharArray(); 
            ac[0] = Character.toLowerCase(ac[0]); 
            return new String(ac); 
        } 
    } 

得出結論

當實體類的屬性為前兩個為大寫時他會返回原字符

AA->AA

Aa->aa

aa->aa

這樣的差異會導致set,get取不到對應的值,所以還是嚴格按照java的命名規范來

 

JavaBean 中的屬性是通過 get/set 方法名得來的,因此

getSname 對應的屬性名是 sname
getSName 對應的屬性名是 SName

如果寫成 sName 或者 Sname 的話就是不合法的屬性名。

在 Java 中要區分一下屬性(property)與字段(field)或成員變量(member variable)的區別。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM