66

ほとんどの変数名は などの「is」で機能することはわかっていますがisBlue()、「has」は ? のような有効なプレフィックスでもありますhasProperty()か?

4

3 に答える 3

83

JavaBeans 仕様のセクション 8.3.2によると、次のようになります。

ブール型プロパティ
さらに、ブール型プロパティの場合、getter メソッドをパターンに一致させることができます。

public boolean is<PropertyName>();

この " isPropertyName" メソッドは " " メソッドの代わりに提供されるget<PropertyName>場合もあれば、" " メソッドに加えて提供される場合もありますget<PropertyName>。どちらの場合でも、is<PropertyName>メソッドがブール型プロパティに存在する場合は、" is<PropertyName>" メソッドを使用してプロパティ値を読み取ります。ブール型プロパティの例は次のとおりです。

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

つまり、それ以降何かが変更されていない限りhas、有効な接頭辞ではありません:(

いずれにせよ、一部のツールやライブラリがそのようなプロパティを認識する可能性はありますが、それに依存することはお勧めできません。

于 2009-04-28T18:37:59.077 に答える
10

Jon Skeetは、仕様によれば、それは無効であると述べました。またcanX、、、shouldXなどは無効です。これはかなり残念です。特定のプロパティに有効なゲッターがあるかどうかを確認する方法は次のとおりです。

BeanInfo info = Introspector.getBeanInfo(Item.class);
Item itm = new Item();
for (PropertyDescriptor pd : info.getPropertyDescriptors()) {
    System.out.println(pd.getName() + " : " + pd.getReadMethod());
}

クラスItemは、fooプロパティを持つjavabeanとgetterである必要があります。readメソッドがの場合null、javabeans仕様に従って定義された有効なゲッターがないことを意味します。

于 2010-12-25T18:40:05.017 に答える
4

これはやや主観的ですが、「has」はブール型プロパティの完全に有効な接頭辞であると言えます。

質問を編集すると、尋ねられたように、javabeans 仕様について言及されていないため、私の回答は質問のその側面に対処しませんでした。したがって、上記の答え。

于 2009-04-28T18:32:57.513 に答える