为什么不"有"......有效的JavaBean方法签名的开头?

Nik*_*ntz 8 java javabeans

JavaBeans方法的签名必须遵循某些约定,例如set .../get ...等.它们有一个约定...例如,isEven()可以是Integer类测试布尔值的方法.但后来我想知道为什么没有...也是一个合法的标识符,因为我有必要测试一些东西,例如hasCar()Person类或同样的东西.

你明白我的问题吗?你怎么看?

Tho*_*mas 5

那么,一般的惯例是使用get...和set...,因此is...仅仅是布尔值异常.对于is...约定很简单:你需要返回一个布尔值,可以跳过getter,相应的setter也会得到一个布尔参数.

一个约定has...会更难:has...返回一个布尔值,但你仍然需要一个处理不同类型的getter和setter.因此has...,没有替代,get...因为is...JavaBeans约定的那部分通常只是关于getter和setter has...不适合那里.

从JavaBeans规范:

属性是离散的,Java Bean的命名属性...

属性以多种方式显示:

  1. ...
  2. 可以通过调用其getter 和setter方法的其他组件以编程方式访问属性(请参阅下面的第7.1节).
  3. ...

使用的任何属性has...都不会持久存在,也不会被其getter方法访问.

示例:如果某人拥有某个car属性,您可能会拥有一个getCar()访问者.hasCar()不会是一个访问器,因为派生属性hasCar需要一个名为 getHasCar()或的访问器isHasCar().如果has是访问者前缀,则该属性将具有冲突的名称car.