项目用到一个类 选取几个代表性的属性如下:
class demo{
private Float bOrigin;
private Float b2Origin;
private Float borigin;
}
在为该类以Generate方式生成get/set方法时,出现了下列有意思的现象:
public Float getbOriginal() {
return bOriginal;
}
public void setbOriginal(Float bOriginal) {
this.bOriginal = bOriginal;
}
public Float getB2Original() {
return b2Original;
}
public void setB2Original(Float b2Original) {
this.b2Original = b2Original;
}
public Float getBoriginal() {
return boriginal;
}
public void setBoriginal(Float boriginal) {
this.boriginal = boriginal;
}
这里细心的人就可以发现,编译器自带的自动生成方法有些需要注意的点:
1,正常的属性全为小写,生成方法会将首字母变为大写
2,当属性首字母小写第二个字母大写时,生成方法不会改变首字母
3,当第二个字符为数字,生成方法仍会将首字母变为大写
这种细微差别或许你觉得影响不大,但对于一些特定场景下,比如数据导出到excel时,在获取数据这一步,由于get/set方法的名称格式不同(如get方法首字母不为大写)会导致数据无法获取到。
另外,JSP里面的值获取方式${entity.property} 若get/set方法名与Generate自动生成的方法名不同,这里括号内的属性名property应写为get方法名去掉get后的字符串。
这些细节性错误完全是可以通过规范命名进行避免,一旦发生就很难想到这一层,在此标记一下提醒自己。