深入了解JavaBean规范中的属性名和setter/getter方法
来源:互联网 发布:淮海战役 知乎 编辑:程序博客网 时间:2024/06/05 01:40
JavaBean规范文档:http://download.oracle.com/otndocs/jcp/7224-javabeans-1.01-fr-spec-oth-JSpec/
关于属性名的部分:
Utility method to take a string and convert it to normal Java variable name capitalization. This normally means converting the first character from upper case to lower case, but in the (unusual) special case when there is more than one character and both the first and second characters are upper case, we leave it alone.
Thus “FooBah” becomes “fooBah” and “X” becomes “x”, but “URL” stays as “URL”.
工具翻译+个人修改:
工具方法把一个字符串并将其转换为正常的Java变量名的大写。这通常意味着将第一个字符从大写转换为小写,
但在(特殊)的特殊情况下,当前两个字符或多个字符是大写时,我们不处理他(直接返回)。因此,“Foobah”变成了“foobah”和“X”变成了“x”,但“URL”仍然是“URL”。
以上的内容实际上是java.bean.Introspector#decapitalize
这个方法的javadoc注释。
方法如下:
/** * Utility method to take a string and convert it to normal Java variable * name capitalization. This normally means converting the first * character from upper case to lower case, but in the (unusual) special * case when there is more than one character and both the first and * second characters are upper case, we leave it alone. * <p> * Thus "FooBah" becomes "fooBah" and "X" becomes "x", but "URL" stays * as "URL". * * @param name The string to be decapitalized. * @return The decapitalized version of the string. */publicstatic String decapitalize(String name) { if(name == null|| name.length() == 0) { returnname; } if(name.length() > 1&& Character.isUpperCase(name.charAt(1)) && Character.isUpperCase(name.charAt(0))){ returnname; } charchars[] = name.toCharArray(); chars[0] = Character.toLowerCase(chars[0]); returnnew String(chars);}
我们使用这个方法对几种不同的字段名进行测试:
看下面的代码:
publicclass TestBean { publicstatic void main(String[] args) { System.out.println(Introspector.decapitalize("name")); System.out.println(Introspector.decapitalize("Name")); System.out.println(Introspector.decapitalize("mName")); System.out.println(Introspector.decapitalize("NAME")); }}
输出:
name
name
mName
NAME
从结果来看name
和Name
的结果是一样的,也就是说如果字段名是Name
,会被当成name
使用,因此从这个角度来说这种命名方式是错误的,不符合规范的。
mName是没问题问题的。NAME也没有问题,NAme,NAMe这样也不会有错。
- 深入了解JavaBean规范中的属性名和setter/getter方法
- javabean根据属性名称获取对应的的getter/setter方法名
- scala属性的getter和setter方法
- 属性getter和setter
- 属性getter和setter
- JavaBean getter/setter命名规范[特例]
- Flex中的getter和setter方法
- JavaScript中的setter和getter方法!!
- 快速生成setter与getter和该属性变量的方法(规范示例)
- getter和setter方法
- setter和getter方法
- setter和getter方法
- getter和setter方法
- getter和setter方法
- 属性和setter以及getter
- objective-c中的属性定义及getter / setter方法
- JAVA中的setter//getter()方法
- setter方法和getter方法
- 天若有情天亦老
- MFC:多线程和网路多线程编程举例
- 第16&17题 Remove Duplicates from Sorted List
- 【语言桥接】(windows)swig-C#封装 C++教程
- autoindex itemindex 区别
- 深入了解JavaBean规范中的属性名和setter/getter方法
- Android ----------------- 面试题 整理 一
- .net发邮件
- 彻底清除GoogleUpdate.exe进程
- ubuntu 安装 GCC 和 G++ C++ 开发环境
- 图像物体检测识别中的LBP特征
- Android全屏模式处理
- Liferay Portal 集成CAS单点登陆(SSO)完成对项目的访问控制 (六)
- 中文传参乱码解决方法