<分区>
JavaBeans 方法的签名必须遵循某些约定,例如 set.../get... 等。他们有一个关于 is 的约定...例如 isEven()
可以是 Integer 类测试 boolean 值的方法。但是后来我想知道为什么没有...也是一个合法的标识符,因为对我来说测试某物有什么是有意义的,例如hasCar()
用于 Person 类或类似的。
你明白我的问题了吗?你怎么看?
<分区>
JavaBeans 方法的签名必须遵循某些约定,例如 set.../get... 等。他们有一个关于 is 的约定...例如 isEven()
可以是 Integer 类测试 boolean 值的方法。但是后来我想知道为什么没有...也是一个合法的标识符,因为对我来说测试某物有什么是有意义的,例如hasCar()
用于 Person 类或类似的。
你明白我的问题了吗?你怎么看?
最佳答案
嗯,一般约定是使用 get...
和 set...
因此 is...
只是一个 boolean 值的异常(exception)。对于 is...
约定很简单:您需要返回一个 boolean 值,可以跳过 getter,相应的 setter 也将采用 boolean 参数。
has...
的约定会更困难:has...
会返回一个 boolean 值,但您仍然需要一个 getter 和 setter 来处理不同种类。因此 has...
不能替代 get...
而不是 is...
并且因为 JavaBeans 约定的这一部分通常只是关于 getter 和 setter 有...
不适合那里。
来自 JavaBeans 规范:
Properties are discrete, named attributes of a Java Bean...
Properties show up in a number of ways:
- ...
- Properties can be accessed programmatically by other components calling their getter and setter methods (see Section 7.1 below).
- ...
任何使用 has...
访问的属性都不会持久化,也不会被其 getter 方法访问。
示例:如果一个人有一个 car
属性,您会期望有一个 getCar()
访问器。 hasCar()
不会是访问器,因为派生属性 hasCar
需要一个名为 getHasCar()
或 isHasCar() 的访问器
。如果 has
是访问器前缀,则该属性将具有冲突名称 car
。
关于java - 为什么 "has"不是有效 JavaBean 方法签名的开头?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11934866/