美文网首页
java中属性命名get字母大小写问题

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

作者: 达微 | 来源:发表于2019-08-13 09:26 被阅读0次

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

Java代码

public class RegionDTO  implements Serializable{    
    public String cId;    
    public String getCid() {    
        return cid;    
    }    
    public void setCid(String cid) {    
        this.cid = cid;    
    }    
    public String cName;        
        
    public String getCName() {    
        return cName;    
    }    
    public void setCName(String name) {    
        cName = name;    
    }    
    
}  
 

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

Java代码

${item.cId}//报错 RegionDTO没有这个属性!!!  

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中属性命名get字母大小写问题

    Java属性命名规范!一般情况下。Java的属性变量名都已小写字母开头,如:userName,showMessag...

  • 命名规则

    Java Bean的命名规范如下: (1)包命名:全部字母小写。 (2)类命名:每个单词首字母大写。 (3)属性名...

  • 选择器

    id命名规范 字母(区分大小写)、下划线、数字。 必须要有语义。 类选择器: .类名{属性1:属性值1; 属性2:...

  • Java中的变量

    命名规范 Java的变量以字母开头,由字母和数字组成,大小写敏感,变量名长度基本无限制 变量初始化 Java允许将...

  • Java 基础

    一:Java命名规则: 1.包命名:所有单词字母小写 2.类命名:所有单词的首字母大写 3.属性命名:第一个单词的...

  • java get/set方法 属性大小写问题

    Java属性命名规范!一般情况下。Java的属性变量名都已小写字母开头,如:userName,showMessag...

  • Go语言学习笔记---程序结构

    2.1命名:以下划线或者是Unicode字母开头命名,注意:在Go中命名区分大小写;2.2声明:(1)在Go中主要...

  • ★02.词法结构

    大小写 JavaScript区分大小写。 HTML不区分大小写。 命名规则 标识符必须以字母、_、$开头。

  • JS中的命名规范

    -1. JS中严格区分大小写 2.遵循国际命名规则—驼峰命名法 命名的时候,可以使用$,_,数字,字母,但是不能以...

  • webservice中传递对象,用Get和Set方法的时候属性值

    属性值的开头首字母不能大写,否则会报找不到该属性, 从百度上找此问题,发现这个是跟底层的JDK有关。Java命名规...

网友评论

      本文标题:java中属性命名get字母大小写问题

      本文链接:https://www.haomeiwen.com/subject/wromjctx.html