那些年踩过的坑——持续更新中…

在JAVA web开发过程中,遇到的各类问题总结,包括JAVA语言,Spring,Spring mvc,ibatis框架等使用过程中遇到的一些常见的,或者不常见的问题。分条列举,附有问题详情以及解决方案。

1.java定义的boolen数据类型的get,set函数(定义为isEditable):

private boolean isEditable;//是否可以编辑

public boolean isEditable() {
    return isEditable;
}

public void setEditable(boolean isEditable) {
    this.isEditable = isEditable;
}

现象:IDEA自动生成的boolean类型与我们的预期有一定的差异,属性isEditable的getter访问器是isEditable(), 而不是getIsEditable();setter访问器是setEditable(),而不是setIsEditable()。

原因:由于属性名isEditable的is没有去掉, 以致java bean类违背了java bean 的命名规范。 JavaBean 的属性名和getter/setter存取方法规则小结:

  • 对于常规属性propertyName , 属性名称的第一个单词小写且字母个数大于1,第二个单词首字母大写。对应的getter/setter方法名为:get/set + PropertyName(), 即属性名称的第一个单词的首字母改成大写,前面再加上”get”或”set”前缀。
  • 对于布尔类型propertyName,可以按常规属性的规则编写getter/setter方法外, getter方法可以使用 is + PropertyName()的形式来代替。
  • 对于非常规属性pName,属性名称的第一个单词小写且字母个数等于1,第二个单词首字母大写,分一下三种情况:

1.对应的getter/setter方法名可以为:get/set + PName(), 即第一个单词的首字母为改为大写,前面再加上”get”或”set”前缀。

2.对应的getter/setter方法名也可以为:get/set + pName(), 即属性名称不变,第一个单词的首字母任然为小写,前面再加上”get”或”set”前缀。

3.对于非常规属性PName, 属性名称的前两个字母都是大写 。即连续两个大写字母开头的属性名。对应的getter/setter方法名为: get/set+PName()

4.对于非常规属性, 属性名称第一个字母大写 。网上有帖子说这是不符合JSR规范的,会报 "属性找不到" 的错误。

总结1. javabean属性命名尽量使用常规的驼峰式命名规则 2. 属性名第一个单词尽量避免使用一个字母:如eBook, eMail 3. boolean属性名避免使用 “is” 开头的名称 4. 随着jdk, eclipse, spring 等软件版本的不断提高, 底版本的出现的问题可能在高版本中解决了, 低版本原来正常的代码可能在高版本环境下不再支持。