eclipse 自动生成getter setter的问题
2016-03-31 14:36
549 查看
众所周知的java中都会给类的属性写getter和setter方法,以getter方法为例,通常是get+属性的大写首字母+属性剩下的字符组成。比如:有个属性名为name,那么其getter方法名就是getName,如果name是boolean类型,那么getter方法就是isName,当然现在的getter和setter方法都不会自己手写了,一般是通过eclipse或者Intellij idea生成。
javabean规范文档:http://download. oracle .com/otndocs/jcp/7224-javabeans-1.01-fr- spec -oth-JSpec/,里面的有以下两个章节降到了具体的命名规则:
8.3.1 Simple properties
8.3.2 Boolean properties
8.8 Capitalization of inferred names.
这个文档里面说明了,从getter和setter方法名如何推倒出propertyName:
一般情况,把除去get或者is(如果是boolean类型)后的部分首字母转成小写即可,比如:getFoo –> foo
如果除去get和is后端的部分,首字母和第二个字母都是大写,不作转换即可,比如:getXPath –> XPath
现在大家都使用ide来帮忙生成getter和setter,那么ide的规则就算是我们的标准了吧,是否把javabean标准反过来推理就行了呢?经测试实际上还有一些场景可能都想不到,比如:首字母不用大写;多个不同的属性(字母大小写不同)的getter方法是相同的。看下面的例子(用eclipse生成getter测试):
看到这里,你是否有种隐隐的蛋疼感~~
想要序列化为json对象时,如果你使用gson的话,基本没啥问题,但要是你使用了低版本的fastjson,那么可能会中枪了
要自己写代码拼装出getter和setter方法名,以此来通过反射查找Method时
属性的前两个都以小写开头
boolean类型不要用is开头
原文转载于 http://ju.outofmemory.cn/entry/220130
javaBean规范
javabean规范文档:http://download. oracle .com/otndocs/jcp/7224-javabeans-1.01-fr- spec -oth-JSpec/,里面的有以下两个章节降到了具体的命名规则:8.3.1 Simple properties
8.3.2 Boolean properties
8.8 Capitalization of inferred names.
这个文档里面说明了,从getter和setter方法名如何推倒出propertyName:
一般情况,把除去get或者is(如果是boolean类型)后的部分首字母转成小写即可,比如:getFoo –> foo
如果除去get和is后端的部分,首字母和第二个字母都是大写,不作转换即可,比如:getXPath –> XPath
意想不到的getter和setter生成规则
现在大家都使用ide来帮忙生成getter和setter,那么ide的规则就算是我们的标准了吧,是否把javabean标准反过来推理就行了呢?经测试实际上还有一些场景可能都想不到,比如:首字母不用大写;多个不同的属性(字母大小写不同)的getter方法是相同的。看下面的例子(用eclipse生成getter测试):// 你能猜对多少 private String getepath --> getGetepath() private String getEpath --> getGetEpath() private String epath --> getEpath() private String ePath --> getePath() // 首字母不用大写 private String Epath --> getEpath() // 和epath的getter方法是一样的 private String EPath --> getEPath() private boolean isenable --> isIsenable() private boolean isEnable --> isEnable() // 不是把首字母大写并在前面加is,其结果和enable的getter方法相同 private boolean enable --> isEnable() private boolean eNable --> iseNable() // 首字母不用大写 private boolean Enable --> isEnable() // 和enable的getter方法相同 private boolean ENable --> isENable() //
看到这里,你是否有种隐隐的蛋疼感~~
什么时候你需要关注getter和setter方法的生成规则?
想要序列化为json对象时,如果你使用gson的话,基本没啥问题,但要是你使用了低版本的fastjson,那么可能会中枪了要自己写代码拼装出getter和setter方法名,以此来通过反射查找Method时
个人建议
属性的前两个都以小写开头boolean类型不要用is开头
原文转载于 http://ju.outofmemory.cn/entry/220130
相关文章推荐
- java导出数据到Excel
- Java开发人员最常犯的10个错误
- java学习一:环境的搭建
- Java回调函数使用
- spring配置文件详解--真的蛮详细
- java指定宽度等比例压缩图片
- 使 JDK 支持 TLS_RSA_WITH_AES_256_CBC_SHA256 加密套件
- JNI/NDK开发指南(二)——JVM查找java native方法的规则
- java设置环境变量CLASSPATH以及path环境变量的作用。
- 初识java反射机制
- java支持xls格式的excel导入和导出
- Java线程池基本使用
- 一天一排序之“归并排序(mergesort)”
- java语法小结4
- Java 中的一些小知识
- java语法小结3
- Spring注解
- 语言基础——Java_十进制数转换成十六进制数的实现
- Spring 头文件
- Java 序列化的测试代码