2013-06-12 4 views
9

私は知らなかったことに気付きました。booleanプロパティ名の先頭に「is」が付いていますが、有効なJava Beanですか?

private boolean isCertified; 

    public boolean isCertified() { 
    return isCertified; 
    } 

    public void setCertified(boolean certified) { 
    isCertified = certified; 
    } 

以下のゲッターとセッターがIntellijによって生成されました。ところで、ロンボクは同じ種類のゲッタとセッタを生成します。

私が期待していたようなもの:私は通常私のブール値は、ìsと属性事実despites私はプロパティ名が読みやすくなると考えて接頭辞ない理由だ

private boolean isCertified; 

    public boolean isIsCertified() { 
    return isCertified; 
    } 

    public void setIsCertified(boolean certified) { 
    isCertified = certified; 
    } 

。だから私は疑問に思う

private boolean certified; 

    public boolean isCertified() { 
    return certified; 
    } 

    public void setCertified(boolean certified) { 
    certified = certified; 
    } 

isXXXという名前のプロパティ、代わりに​​の isXXXさゲッターを持つ
  • :それが有効である

    私は普通のような何かを書きますJava Beanの定義ですか?

  • コードの可読性を向上させるために、他に隠れたJava Beanのコーナーケースがありますか?

おかげ

答えて

10

AFAIK、フィールドの命名パターンはJavaBeans仕様の一部ではありません。

JavaBeans仕様では、(特に)「プロパティ」の概念が指定されています。

クラスのプロパティは、クラスのメソッド(特定のパターンの名前に基づいて名前が付けられます)によって識別されます。

フィールドは無関係です。実際には、財産のためのフィールドである必要はありません。

これは、プロパティ名の後にフィールドの名前を付けることは、まだ良い習慣です。フィールドにもアクセスする必要のあるツール(たとえば、IDEでのリファクタリングサポート)がフィールドを正しく処理する可能性が高くなります。

isXXXという名前のプロパティと、isIsXXXの代わりにisXXXというゲッターがある:これは有効なJava Beanの定義ですか?

いいえ、プロパティisXXX用ゲッターはisIsXXX()(ブール)またはgetIsXXX()を必要とします。

もう一度やり直してください。あなたがメソッドを持っている場合は

boolean isXyz() 

は、あなたが読みやすい性質 xyzを持っています。

あなたは法に

boolean isIsXyz() 

を持っているなら、あなたは読みやすい性質isXyzを持っています。詳細については

Introspectorクラスを見て、tutorialまたはJavaBeansの仕様があります:Javaの豆のプロパティは、通常はちょうど彼らのゲッターとセッターで定義されているので

http://www.oracle.com/technetwork/java/javase/documentation/spec-136004.html

http://www.oracle.com/technetwork/java/javase/tech/index-jsp-138795.html

1

本当にあなたのプライベートフィールドが呼び出されるかは重要ではありません。あなたのセッターとゲッターがそこにいるのはそのためです。

3
private boolean certified; 

public boolean isCertified() { 
    return certified; 
} 

public void setCertified(boolean certified) { 
    this.certified = certified; 
} 

大丈夫です。 見ることができる変数名の詳細oracle.docs

1

をメソッド(実際には、おそらくprivate、メンバ変数はその目的のために無視されます)、はい、それは完全にうまくいきます。ブール値のメンバーをまだcertifiedと呼んでいますが、それはスタイル/趣味の問題です。

0

ブール変数のセッター/ゲッターをIDE(多くの場合はEclipse)から生成する場合、これがセッターとゲッターの標準的な作成方法です。それは完璧な有効なJava Bean定義です。実際に値がsetters/gettersを使用して渡され、ブール変数を定義し、生成されたsetter/getterを使用するJSFのようなフレームワークを使用する場合は必須です。

関連する問題