JavaBean的属性变量名前两个字母大小写问题

标签: Java属性名首字母大小写问题
0人阅读 评论(0) 收藏 举报
分类:

Java属性命名规范! 

一般情况下。Java的属性变量名都已小写字母开头,如:userName,showMessage等,但也存在着特殊情况,考虑到一些特定的有意思的英文缩略词如(USA,XML等),JavaBean也允许大写字母起头的属性变量名,不过必须满足“变量的前两个字母要么全部大写,要么全部小写”的要求,如:IDCode、ICCard、idCode等属性变量名是合法的,而iC、iCcard、iDCode等属性变量名是非法的。正是由于这个原因造成了下面这种情况: 
举个例子: 
JavaBean

Java代码

[java] view plain copy
  1. public class RegionDTO  implements Serializable{    
  2.     public String cId;    
  3.     public String getCid() {    
  4.         return cid;    
  5.     }    
  6.     public void setCid(String cid) {    
  7.         this.cid = cid;    
  8.     }    
  9.     public String cName;        
  10.         
  11.     public String getCName() {    
  12.         return cName;    
  13.     }    
  14.     public void setCName(String name) {    
  15.         cName = name;    
  16.     }    
  17.     
  18. }  

 

封装成List后,然后在页面上用C标签进行显示 

Java代码

[java] view plain copy
  1. ${item.cId}//报错 RegionDTO没有这个属性!!!  

 

 

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
转自:http://chanson.javaeye.com/blog/419028 
1、背景 
本文讲的普通JavaBean只是一个拥有Property(域/类变量)及其setter/getter的普通Java类。 
有 一定Java开发经验的人可能会知道,普通JavaBean的Property(域/类变量)的命名不能采用以下形式:aA***或者Aa***, 如:"aDdress"或"Address",否则,在web应用中会报无法找到这个Property(因为根据"规则",需要找的是"ADdress" 或"address")。但对于其中的原因,一般人都不明白,难道这是Sun公司当初定的规范吗? 
Java开源以后,我们终于可以解开其中的谜: 

2、普通JavaBean处理涉及到相关类 
在web应用中,Servlet容器或者EJB容器一般会使用java.beans包中的类来加载这些JavaBean。 
BeanInfo(接口) 
   | 
SimpleInfo(类) 
   | 
GenericBeanInfo(类) 
GenericBeanInfo是JavaBean数据装载类。 
Introspector是JavaBean处理中最重要的一个处理类。 
另外的一些辅助类,就不一一列举了。 

3、解密 
3.1 开始 
在应用中,我们通常会用以下代码来获取一个普通JavaBean相关的信息: 
BeanInfo mBeanInfo = null; 
try { 
mBeanInfo = Introspector.getBeanInfo(Person.class); 
} catch (IntrospectionException e) { 
e.printStackTrace(); 

3.2 深入 
在Introspector类的getBeanInfo方法中,我们发现其中与Property处理相关的行: 
private GenericBeanInfo getBeanInfo() 
        throws IntrospectionException { 
        …… 
        PropertyDescriptor apropertydescriptor[] = getTargetPropertyInfo(); 
        …… 
    } 
3.3 继续深入 
在Property处理方法中,我们发现其处理方式是根据getter/setter的方法来得到Property(域/类变量) 
private PropertyDescriptor[] getTargetPropertyInfo() throws IntrospectionException{ 
   …… 
if(s.startsWith("get")) obj = new PropertyDescriptor(decapitalize(s.substring(3)), method, null); 
…… 

3.4 关键 
接下来,最关键的就是下面这个方法: 
public static String decapitalize(String s) 
    { 
        if(s == null || s.length() == 0) 
            //空处理 
            return s; 
        if(s.length() > 1 && Character.isUpperCase(s.charAt(1)) && Character.isUpperCase(s.charAt(0))){ 
            //长度大于1,并且前两个字符大写时,返回原字符串 
            return s; 
        } else{ 
            //其他情况下,把原字符串的首个字符小写处理后返回 
            char ac[] = s.toCharArray(); 
            ac[0] = Character.toLowerCase(ac[0]); 
            return new String(ac); 
        } 
    } 
4 Ending 
解密完成。

查看评论

Java bean中字段命名潜规则,前两个字母要么都大写,要么都小写

Java bean中字段命名潜规则,前两个字母要么都大写,要么都小写,否则会出错 以下代码是获取字段名的源码,根据这段代码可以得知:   输入         输出 AA             A...
  • caoxiao_lcu
  • caoxiao_lcu
  • 2017-12-17 15:54:34
  • 155

Java的属性变量名前两个字母大小写问题

Java属性命名规范!  一般情况下。Java的属性变量名都已小写字母开头,如:userName,showMessage等,但也存在着特殊情况,考虑到一些特定的有意思的英文缩略词如(USA,XML等...
  • u011742227
  • u011742227
  • 2015-01-05 16:59:04
  • 647

Java变量及类名称定义坑之第二个字母大写

在Java开发中,命名规范一直备受关注,驼峰命名法各种命名规范常被开发中使用,在此不再赘述。本文主要记录一下当命名中第二个字母大写遇到的麻烦。 一、Entity属性第二个字段为大写,如 publi...
  • fenyuduanchangren
  • fenyuduanchangren
  • 2017-06-09 17:34:13
  • 1429

spring中注入属性时,属性名头两个字母必须小写

今天在spring中配置dao和bean时
  • rainyspring4540
  • rainyspring4540
  • 2014-06-03 18:18:46
  • 534

属性名前两个字母要么都是大写的要么都是小写的(当然数字与_、$算小写)

关于属性名 “属性名前两个字母要么都是大写的 要么都是小写的”。。。。。。 为什么这么说呢?仅仅是因为规范么?人生若只如初见该多好,那就挺听一个对java的初见小菜鸟根据感受娓娓道来吧。。。。   刚...
  • u013114174
  • u013114174
  • 2015-08-09 16:44:42
  • 910

Experience Java的属性变量名前两个字母大小写问题

 Java属性命名规范!  一般情况下。Java的属性变量名都已小写字母开头,如:userName,showMessage等,但也存在着特殊情况,考虑到一些特定的有意思的英文缩略词如(USA,...
  • honghailiang888
  • honghailiang888
  • 2015-10-06 15:13:54
  • 323

EL表达式碰上两个大写属性名怎么办?

通常是  userName; 但是可能会出现  uUserName属性的情况。那么生成的get方法是getUUserName(); EL表达式:${user.uUserName}是...
  • u013474568
  • u013474568
  • 2017-04-12 14:16:30
  • 407

java中属性命名get字母大小写问题

java文件 company.java private int sTime; public void setSTime (int sTime) {         this.sT...
  • u010744399
  • u010744399
  • 2016-09-13 09:41:22
  • 1991

忽略字段的首字母大小写,将json字符串转成javabean对象

  • 2015年11月02日 16:57
  • 4KB
  • 下载

java 变量的命名,get和set方法的问题

java 变量的命名,get和set方法的问题 举报|  分享| 2015-11-02 10:07凝の影 | 浏览 53 次  悬赏:30  java private Strin...
  • evilcry2012
  • evilcry2012
  • 2016-03-25 14:26:41
  • 932
    个人资料
    持之以恒
    等级:
    访问量: 1万+
    积分: 440
    排名: 11万+
    最新评论