烟台网站建设工作,如何创建微信公众号免费,网站外链的优化方法,网站统计代码Lombok的Data注解踩坑#xff0c;Setter的大小写问题
以前在处理前端请求的实体类的时候#xff0c;都是用Lombok的Data注解对实体类进行getter、setter以及toString的声名#xff0c;今天处理实体类的时候#xff0c;发现生成的setter方法和Java Bean的命名规则不一致。Data注解踩坑Setter的大小写问题
以前在处理前端请求的实体类的时候都是用Lombok的Data注解对实体类进行getter、setter以及toString的声名今天处理实体类的时候发现生成的setter方法和Java Bean的命名规则不一致。Data的作用是为我们定义的字段添加Lombok的ToString、EqualsAndHashCode、 Getter方法、RequiredArgsConstructor 和 为非final字段添加Setter
我要生成getter、setter的字段是 private ListMapString,String yAxis;private ListXAxis xAxis;在我使用Data时生成的代码和实际要生成的代码比较如下
//Data生成的setter方法
setYAxis() setXAxis()
//实际需要的setter方法
setyAxis() setxAxis()Java Bean的4种命名特殊规范中有一种情况如果属性名的第二个字母大写那么该属性名直接用作 getter/setter 方法中 get/set 的后部分就是说大小写不变。例如属性名为uName方法是getuName/setuName。
字段的首字母大小写发生了变化。这个变化意味着我在使用Data注解生成的getter方法得到的属性值是yaxis和xaxis而实际上我需要的属性值为yAxis和xAxis这也就导致了我返回给前端的数据前端无法识别从而出错。
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方法会省掉getset方法会去掉is。例如属性名为isOK方法是isOK/setOK。 需要注意的是有些开发工具自动生成的getter/setter方法并没有考虑到上面所说的特例情况会导致bug的产生。
我们在定义JavaBean的属性名时应该尽量避免属性名的头两个字母中任意一个为大写以及属性名以is开头。