属性名前两个字母要么都是大写的要么都是小写的(当然数字与_、$算小写)
来源:互联网 发布:网页页面设计软件 编辑:程序博客网 时间:2024/04/27 09:10
关于属性名
“属性名前两个字母要么都是大写的 要么都是小写的”。。。。。。
为什么这么说呢?仅仅是因为规范么?人生若只如初见该多好,那就挺听一个对java的初见小菜鸟根据感受娓娓道来吧。。。。
刚开始接触java时认为声明的全局变量就是对象的属性,当然这也是最初的定义,老师刚开始也这么讲。于是通过对属性的赋值操作来改变对象的状态。
当然没过多久,就明白了面向对象的一个特性--》封装性。这时才明白,不能像之前那么随心所遇的改变对象的状态了,要通过getter、setter 进行对应的访问,当然这也是必须的,因为没有对象愿意把自己的隐私全部暴露出来,没有哪个Person类的对象愿意把性别设置成 男、女之外其他的什么。。。
再后来,便一步步陷入java的深渊,开始解除令人惊叹不已的反射机制了,这也算是java作为强大的动态语言的根本所在吧。我们可以在运行时对内存中的对象一览无余,当然也是因为内存中有他对应的类的Class实例,也就对他的类结构了如指掌了。
甚至可以获取、操作私有的结构,包括私有化的属性,记得有一个好问的同学说了一句: ‘我们就这么就获取到了千辛万苦私有化的属性,这不违背了封装性了’。不错如果真 的直接这样对属性进行赋值了,的确是违背了封装性,数据又不安全了。
但是反射机制是无法避免的,虽然对象不小心暴露他的这些隐私了,但是我们可以装作不知道么,最起码尊重一下他人,当然这也是最安全的做法,没准稍微好奇一下他就或死或残了呢。所以我们可以继续装作获取不到这些属性,可以按照封装性的思想继续通过getter setter访问不是极好么?
所以到现在学到一些框架、工具等对象,发现大量的反射,对属性的操作当然也是通过getter setter访问比较安全。 所以到这个阶段所说的属性基本上就指的是通过getter setter方法来定义的属性 比如 setAge() 属性就是age setNumber() 属性就是number。
最初大家都知道,getter setter 前三个字母之后,第一个字母小写,这便是属性名了, 但是如果想定义了两个字段名是iDCard 跟IDcard。他们的setter岂不是一样了, 产 生了混淆。同样idCard跟IdCard 根据setter方法也产生了混淆。因为长得一 样, 但是java只能做一个决定。所以通过这种setter方法定义的属性名只能返回一种, 具 体怎么返回,源码规则是这样的:
if (str == null || str.length() == 0) {
return str;
}
if (str.length() > 1 && Character.isUpperCase(str.charAt(1))
&& Character.isUpperCase(str.charAt(0))) {
return str;
} else {
char ca[] = str.toCharArray();
ca[0] = Character.toLowerCase(ca[0]);
return new String(ca);
}
就是说,如果set后前两个字母都大写,那么属性值原样返回,否则将首字母小写返回。这样的结果就是要么前两个字母都大写,要么都小写。所以有了那句话,“属性名前两个字母要么都是大写 要么都是小写”,所以为了避免字段与属性的混淆,我们在字段的命名上也尽量按照这一规则。在使用反射时,也要根据setter/getter赋值与取值。
- 属性名前两个字母要么都是大写的要么都是小写的(当然数字与_、$算小写)
- Java bean中字段命名潜规则,前两个字母要么都大写,要么都小写
- swift 字母大小写转换代码,大写转小写,小写转大写都是一行
- DTO或Form中的属性命名时,属性名称的前两个字母必须小写
- 属性名小写的错误.
- 偶数位上都是偶数,要么所有的奇数位上都是奇数
- 偶数位上都是偶数,要么所有的奇数位上都是奇数
- 数字小写到英文大写的转换
- 把首写字母大写,其他的字母小写
- 输入一个小写字母 自动输入这个小写字母前面和后面的大写和小写字母
- 数字、小写字母、大写字母的ASCII码
- C语言关于字符串中字母大写换小写,小写换大写的实现程序
- C 输入一串字符,把小写字母变成大写,分别输出大小写、数字、空格的个数
- C# 删除字符串中除字母和数字之外的其它字符,C#将字符串中的大写转小写,小写转大写
- mvn install 编译好的class为什么都是小写的?
- 小写数字与大写数字转换
- 常见对象_统计大写,小写及数字字符的个数案例
- 常见对象_统计字符串中大写小写以及数字出现的次数案例
- 相似图片搜索
- 提示磁盘被写保护怎么办?
- Python中re(正则表达式)模块详解
- 项目开发中用到的一些MySQL语句
- hdu 4547 lca-tarjan离线算法
- 属性名前两个字母要么都是大写的要么都是小写的(当然数字与_、$算小写)
- jQuery 动画、HTML、CSS
- 怎样设计数据库之命名规范
- LintCode-最大子数组 III
- corejava知识---【一】
- POJ3104 Drying
- CSS学习笔记---(四)
- Jsp中复选框的全选与反选
- 【JavaMail开发总结】配置文件形式--发送邮件程序