Java Bean之Lombok踩坑
创始人
2024-02-05 14:42:06

以前在处理前端请求的实体类的时候,都是用Lombok的@Data注解对实体类进行getter、setter以及toString的声名,今天处理实体类的时候,发现生成的setter方法和Java Bean的命名规则不一致。(@Data的作用是为我们定义的字段添加Lombok的@ToString、@EqualsAndHashCode、 @Getter方法、@RequiredArgsConstructor 和 为非final字段添加@Setter)

这次在处理一个根据实体类List解析成csv文件时,写实体类时直接复制了上游传过来的字段信息,该字段的命名包含前两个字符都大写的特殊情况等,导致生成的csv文件该字段一直没有值,后来查了一下发现原来是@Data自动生成的getter和setter命名与JavaBean命名规范不一致导致的,导致无法设置以及获取该字段信息。

JavaBean getter/setter命名规范[特例]

一般JavaBean属性以小写字母开头,驼峰命名格式,相应的 getter/setter 方法是 get/set 接上首字母大写的属性名。例如:属性名为userName,其对应的getter/setter 方法是 getUserName/setUserName。

但是,还有一些特殊情况:

  • 如果属性名的第二个字母大写,那么该属性名直接用作 getter/setter 方法中 get/set 的后部分,就是说大小写不变。例如属性名为uName,方法是getuName/setuName。

  • 如果属性名的前两个字母是大写(一般的专有名词和缩略词都会大写),也是属性名直接用作 getter/setter 方法中 get/set 的后部分。例如属性名为URL,方法是getURL/setURL。

  • 如果属性名的首字母大写,也是属性名直接用作 getter/setter 方法中 get/set 的后部分。例如属性名为Name,方法是getName/setName,这种是最糟糕的情况,会找不到属性出错,因为默认的属性名是name。

  • 如果属性名以"is"开头,则getter方法会省掉get,set方法会去掉is。例如属性名为isOK,方法是isOK/setOK。

需要注意的是有些开发工具自动生成的getter/setter方法,并没有考虑到上面所说的特例情况,会导致bug的产生。

我们在定义JavaBean的属性名时,应该尽量避免属性名的头两个字母中任意一个为大写以及属性名以"is"开头。

相关内容

热门资讯

晶丰明源:拟32.83亿元购买... 晶丰明源公告,公司拟通过发行股份及支付现金的方式向海南玮峻思投资合伙企业(有限合伙)(简称“玮峻思”...
立德树人、文脉长存,全国高校中... 随着各大高校陆续发布寒假安排,大学生们也将开启寒假模式。1月9日,记者从京沪高校学工部长论坛暨高质量...
南宁动物园展现御寒“十八般武艺... 近期,南宁天气按下“降温键”,早晚温差较大,不少市民早已裹上厚厚的棉外套以抵御寒风侵袭。不过,在南宁...
进腾集团(02011):吴卓轩... 进腾集团(02011)发布公告,内容有关主要股东吴景明先生离世,以及吴卓轩先生(执行董事及吴先生之侄...
生态环境部部长黄润秋:愿进一步... 转自:财联社【生态环境部部长黄润秋:愿进一步加强中新双方在固体废物与循环经济领域交流】财联社1月9日...