布尔 getter 方法的有效 JavaBean 名称

发布于 2024-07-18 08:04:56 字数 98 浏览 5 评论 0原文

我知道大多数变量名称都可以使用“is”,例如 isBlue(),但是“has”也是有效的前缀吗,例如 hasProperty()

I know most variable names will work with "is", such as isBlue(), but is "has" also a valid prefix, like hasProperty()?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

梦幻的味道 2024-07-25 08:04:56

根据 JavaBeans 规范 部分8.3.2:

布尔属性
此外,对于
布尔属性,我们允许使用 getter
匹配模式的方法:

public boolean is();


isPropertyName”方法可能是
提供而不是
get”方法,或者它可能
除了提供
get”方法。 在任一
情况下,如果 is 方法
那么存在布尔属性
我们将使用“is
方法读取属性值。 一个
示例布尔属性可能是:

公共布尔 isMarsupial();
公共无效setMarsupial(布尔m);


换句话说,除非从那时起发生了一些变化,否则 has 恐怕不是一个有效的前缀:(

一些工具和库无论如何都会识别这些属性,但依赖它并不是一个好主意。

According to the JavaBeans specification section 8.3.2:

Boolean properties
In addition, for
boolean properties, we allow a getter
method to match the pattern:

public boolean is<PropertyName>();

This
"isPropertyName" method may be
provided instead of a
"get<PropertyName>" method, or it may
be provided in addition to a
"get<PropertyName>" method. In either
case, if the is<PropertyName> method
is present for a boolean property then
we will use the "is<PropertyName>"
method to read the property value. An
example boolean property might be:

public boolean isMarsupial();
public void setMarsupial(boolean m);

In other words, unless something has changed since then, has isn't a valid prefix I'm afraid :(

It's possible that some tools and libraries will recognise such properties anyway, but it's not a good idea to rely on it.

一曲琵琶半遮面シ 2024-07-25 08:04:56

Jon Skeet 指出,根据规范,它是无效的。 此外,canXshouldX 等都是无效的。 这是相当不幸的。 以下是检查给定属性是否具有有效 getter 的方法:

BeanInfo info = Introspector.getBeanInfo(Item.class);

for (PropertyDescriptor pd : info.getPropertyDescriptors()) {
    System.out.println(pd.getName() + " : " + pd.getReadMethod());
}

Item 类应该是具有 foo 属性和 getter 的 javabean。 如果 read 方法为 null,则表示没有根据 javabeans 规范定义有效的 getter。

Jon Skeet noted that according to the specification it is not valid. Also, canX, shouldX, and the likes are not valid. Which is rather unfortunate. Here is a way to check whether a given property has a valid getter:

BeanInfo info = Introspector.getBeanInfo(Item.class);

for (PropertyDescriptor pd : info.getPropertyDescriptors()) {
    System.out.println(pd.getName() + " : " + pd.getReadMethod());
}

The class Item should be a javabean with a foo property, and a getter. If the read method is null, it means there is no valid getter defined according to the javabeans spec.

雨落□心尘 2024-07-25 08:04:56

这有点主观,但是,是的,我想说“has”是布尔属性的完全有效的前缀。

编辑问题,按照要求,没有提到javabeans规范,所以我的回答没有解决问题的这方面。 于是就有了上面的答案。

This is somewhat subjective, but yes, I would say "has" is a perfectly valid prefix for a Boolean property.

edit the question, as asked, did not mention the javabeans specification and so my answer did not address that aspect of the question. Hence the answer above.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文