您的当前位置:首页javaBean中的getset的命名规范

javaBean中的getset的命名规范

2023-12-18 来源:小侦探旅游网
javaBean中的getset的命名规范

[转]

最近的struts项⽬中遇到了这样的问题: 我的action中全局变量明明有getset⽅法,⽽且是⾃动⽣成的,但是在使⽤的时候,总是说找不到这个属性的getset⽅法,取不到从jsp传来 的值, 原因如下:变量名为:hDeptment,在⾃动⽣成getset⽅法为:setHDeptment,getHDeptment。下⾯是解释这个问题。

(1)JavaBean 类必须是⼀个公共类,并将其访问属性设置为 public ,如: public class user{......}(2)JavaBean 类必须有⼀个空的构造函数:类中必须有⼀个不带参数的公⽤构造器

(3)⼀个javaBean类不应有公共实例变量,类变量都为private ,如: private int id;

(4)属性应该通过⼀组存取⽅法(getXxx 和 setXxx)来访问,⼀般是IDE(Eclipse、JBuilder) 为属性⽣成getter/setter ⽅法

⼀般JavaBean属性以⼩写字母开头,驼峰命名格式,相应的 getter/setter ⽅法是 get/set 接上⾸字母⼤写的属性名。例如:属性名为userName,其对应的getter/setter ⽅法是 getUserName/setUserName。但是,还有⼀些特殊情况:

1、如果属性名的第⼆个字母⼤写,那么该属性名直接⽤作 getter/setter ⽅法中 get/set 的后部分,就是说⼤⼩写不变。例如属性名为uName,⽅法是getuName/setuName。2、如果前两个字母是⼤写(⼀般的专有名词和缩略词都会⼤写),也是属性名直接⽤作 getter/setter ⽅法中 get/set 的后部分。例如属性名为URL,⽅法是getURL/setURL。3、如果⾸字母⼤写,也是属性名直接⽤作 getter/setter ⽅法中 get/set 的后部分。例如属性名为Name,⽅法是getName/setName,这种是最糟糕的情况,会找不到属性出错,因为默认的属性名是name。所以在action的全局变量和JavaBean命名时应该注意符合以上命名规范。

附下表,看看吧:

————————————————————————————————————————————————————————属性名/类型 | getter ⽅法 | setter ⽅法

————————————|——————————————————|——————————————————————————xcoordinate/Double | public Double getXcoordinate() | public void setXcoordinate(Double newValue)

————————————|——————————————————|——————————————————————————xCoordinate/Double | public Double getxCoordinate() |public void setxCoordinate(Double newValue)

————————————|——————————————————|——————————————————————————XCoordinate/Double |public Double getXCoordinate() | public void setXCoordinate(Double newValue)

————————————|——————————————————|——————————————————————————Xcoordinate/Double |不允许 | 不允许

————————————|——————————————————|——————————————————————————分割线 ==========================================================================================遇到⼀个异常:

javax.servlet.jsp.el.ELException: Unable to find a value for “isActive” in object of class “com.mycompany.domain.User” usingoperator “.”

使⽤“.”运算符,在User类的对象中,找不到isActive的值。

错误之处是,在JSP页⾯中我使⽤了:

1${user.isActive}

检查后发现没有写属性isActive的getter⽅法,那好,利⽤IntelliJ IDEA的⾃动⽣成代码功能,补上:

1

public boolean isActive() {

2

return isActive;

3

}

运⾏,还是不对,问Erik,他说JavaBean命名规范⾥⾯规定,对于primitive和⾃定义类类型的属性property(⼩ 写),getter和setter⽅法就是getProperty和setProperty(第⼀个字母变⼤写,前⾯再加get或set)。⽽对于类型为 boolean的属性,getter⽅法还可以写为

isProperty(getProperty仍然可⽤),⽽且,如果属性的前两个字母是is(两个⼩ 写),则getter与property完全同名(⽐如上⾯属性isActive的getter就是isActive())。

如果有个叫isIsActive的boolean类型属性,它的getter呢?答案还是isIsActive()。

所以,⽆论属性名是isActive还是active,getter只能是isActive()或者getActive(),JSP⾥只能⽤${user.active}来访问(注意⼤⼩写)。最好的办法是不要以“is”作为开头来命名boolean类型的属性,以免混淆。

分割线====================================================================================

总之,javaBean中,要设置或获取某个property的值,就需要相应的get和set⽅法,对于boolean型,你可以⽤get/set⽅式来处理boolean,可以⽤is来代替get;

再者,⼀定要注意javaBean中的命名规范!

因篇幅问题不能全部显示,请点此查看更多更全内容