[color=darkred][size=large]
以下为网络资源!
如果JavaBean的属性值第二个字母为大写,有的Eclipse会出问题,在这个问题上又研究了一下下,总结如下:
一般JavaBean属性以小写字母开头,驼峰命名格式,相应的 getter/setter 方法是 get/set 接上首字母大写的属性名。例如:属性名为userName,其对应的getter/setter 方法是 getUserName/setUserName。
但是,还有一些特殊情况:
1、如果属性名的第二个字母大写,那么该属性名直接用作 getter/setter 方法中 get/set 的后部分,就是说大小写不变。例如属性名为uName,方法是getuName/setuName。
2、如果前两个字母是大写(一般的专有名词和缩略词都会大写),也是属性名直接用作 getter/setter 方法中 get/set 的后部分。例如属性名为URL,方法是getURL/setURL。
3、如果首字母大写,也是属性名直接用作 getter/setter 方法中 get/set 的后部分。例如属性名为Name,方法是getName/setName,这种是最糟糕的情况,会找不到属性出错,因为默认的属性名是name。
所以在JavaBean命名时应该注意符合以上命名规范。
需要注意的是有些开发工具的自动生成的getter/setter方法,并没有考虑到上面所说的特例情况,导致bug的产生,比如Eclipse3.4版本,Eclipse3.5较3.4智能些,避免了一些问题。以下是我在Eclipse3.5和Eclipse3.4分别做的实验:
在User的实体类中,设了两个变量,一个是userName,另一个是uName,然后用Eclipse的自动生成的get和set方法(source–>Generate getter andsetter),在Eclipse3.5中生成的是下图所示的正确的方法,正常的方法是将变量名的首字母变成大写,而如果变量名的第一个字母是小写,第二个字母是大写,则第一个字母为小写不变。
[img]http://dl.iteye.com/upload/attachment/0067/7505/5b32f406-f4cc-37c8-8b4c-962d4f661de9.jpg[/img]
然后在spring配置文件中对User类进行bean注入
[img]http://dl.iteye.com/upload/attachment/0067/7509/11032c8c-e22b-3f7d-b7ed-a4ce050771f6.jpg[/img]
接下来运行一个测试的方法,将两个变量输出
[img]http://dl.iteye.com/upload/attachment/0067/7507/cea25536-531e-3b2c-814d-5c3b6ca9fd90.jpg[/img]
以下是输出结果。
[img]http://dl.iteye.com/upload/attachment/0067/7511/fbd92236-af93-3f9d-84ed-b201d4fa2402.jpg[/img]
而在Eclipse3.4中,这样的命名方法就会出问题,看下图红色标注的地方,Eclipse3.4只是简单的将第一个字母变成大写。
[img]http://dl.iteye.com/upload/attachment/0067/7513/235291cd-2adf-34d8-8763-bb29dfd91ccc.jpg[/img]
这样在同样的配置文件下,运行测试方法就会出问题,说uName这个属性找不到,因为已经变成了UName,所以在创建bean的时候就找不到uName这个变量了。
[img]http://dl.iteye.com/upload/attachment/0067/7517/cc1f273b-5d45-3ed8-bef2-a3a9f90c3328.jpg[/img]
前两个字母大写的情况:
[img]http://dl.iteye.com/upload/attachment/0067/7519/956c8a0e-1feb-310b-af3f-c0da9b1e795e.jpg[/img]
输出结果:
[img]http://dl.iteye.com/upload/attachment/0067/7523/bb221ea3-32e5-3872-8343-f66e23cc562e.jpg[/img]
首字母大写的情况:
[img]http://dl.iteye.com/upload/attachment/0067/7525/80cf9d39-55b7-3b46-a2f7-243646217381.jpg[/img]
[img]http://dl.iteye.com/upload/attachment/0067/7527/46c8e686-a487-305d-a8cb-173dbddfef2e.jpg[/img]
这时会出现问题:
[img]http://dl.iteye.com/upload/attachment/0067/7529/cd47686b-aea4-3a1e-857c-5f7c73b6e3ea.jpg[/img]
希望大家在对属性进行命名的时候注意一下特殊情况,可以避免相关问题的产生。[/size][/color]
以下为网络资源!
如果JavaBean的属性值第二个字母为大写,有的Eclipse会出问题,在这个问题上又研究了一下下,总结如下:
一般JavaBean属性以小写字母开头,驼峰命名格式,相应的 getter/setter 方法是 get/set 接上首字母大写的属性名。例如:属性名为userName,其对应的getter/setter 方法是 getUserName/setUserName。
但是,还有一些特殊情况:
1、如果属性名的第二个字母大写,那么该属性名直接用作 getter/setter 方法中 get/set 的后部分,就是说大小写不变。例如属性名为uName,方法是getuName/setuName。
2、如果前两个字母是大写(一般的专有名词和缩略词都会大写),也是属性名直接用作 getter/setter 方法中 get/set 的后部分。例如属性名为URL,方法是getURL/setURL。
3、如果首字母大写,也是属性名直接用作 getter/setter 方法中 get/set 的后部分。例如属性名为Name,方法是getName/setName,这种是最糟糕的情况,会找不到属性出错,因为默认的属性名是name。
所以在JavaBean命名时应该注意符合以上命名规范。
需要注意的是有些开发工具的自动生成的getter/setter方法,并没有考虑到上面所说的特例情况,导致bug的产生,比如Eclipse3.4版本,Eclipse3.5较3.4智能些,避免了一些问题。以下是我在Eclipse3.5和Eclipse3.4分别做的实验:
在User的实体类中,设了两个变量,一个是userName,另一个是uName,然后用Eclipse的自动生成的get和set方法(source–>Generate getter andsetter),在Eclipse3.5中生成的是下图所示的正确的方法,正常的方法是将变量名的首字母变成大写,而如果变量名的第一个字母是小写,第二个字母是大写,则第一个字母为小写不变。
[img]http://dl.iteye.com/upload/attachment/0067/7505/5b32f406-f4cc-37c8-8b4c-962d4f661de9.jpg[/img]
然后在spring配置文件中对User类进行bean注入
[img]http://dl.iteye.com/upload/attachment/0067/7509/11032c8c-e22b-3f7d-b7ed-a4ce050771f6.jpg[/img]
接下来运行一个测试的方法,将两个变量输出
[img]http://dl.iteye.com/upload/attachment/0067/7507/cea25536-531e-3b2c-814d-5c3b6ca9fd90.jpg[/img]
以下是输出结果。
[img]http://dl.iteye.com/upload/attachment/0067/7511/fbd92236-af93-3f9d-84ed-b201d4fa2402.jpg[/img]
而在Eclipse3.4中,这样的命名方法就会出问题,看下图红色标注的地方,Eclipse3.4只是简单的将第一个字母变成大写。
[img]http://dl.iteye.com/upload/attachment/0067/7513/235291cd-2adf-34d8-8763-bb29dfd91ccc.jpg[/img]
这样在同样的配置文件下,运行测试方法就会出问题,说uName这个属性找不到,因为已经变成了UName,所以在创建bean的时候就找不到uName这个变量了。
[img]http://dl.iteye.com/upload/attachment/0067/7517/cc1f273b-5d45-3ed8-bef2-a3a9f90c3328.jpg[/img]
前两个字母大写的情况:
[img]http://dl.iteye.com/upload/attachment/0067/7519/956c8a0e-1feb-310b-af3f-c0da9b1e795e.jpg[/img]
输出结果:
[img]http://dl.iteye.com/upload/attachment/0067/7523/bb221ea3-32e5-3872-8343-f66e23cc562e.jpg[/img]
首字母大写的情况:
[img]http://dl.iteye.com/upload/attachment/0067/7525/80cf9d39-55b7-3b46-a2f7-243646217381.jpg[/img]
[img]http://dl.iteye.com/upload/attachment/0067/7527/46c8e686-a487-305d-a8cb-173dbddfef2e.jpg[/img]
这时会出现问题:
[img]http://dl.iteye.com/upload/attachment/0067/7529/cd47686b-aea4-3a1e-857c-5f7c73b6e3ea.jpg[/img]
希望大家在对属性进行命名的时候注意一下特殊情况,可以避免相关问题的产生。[/size][/color]