10

知らなかったことに気がつきました。

  private boolean isCertified;

  public boolean isCertified() {
    return isCertified;
  }

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

次のゲッターとセッターは、Intellij によって生成されています。ところで、Lombok は同じ種類のゲッターとセッターを生成します。

私は次のようなものを期待していたでしょう:

  private boolean isCertified;

  public boolean isIsCertified() {
    return isCertified;
  }

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

ìsそのため、プロパティ名が読みやすくなると思うにもかかわらず、通常、ブール属性の前に を付けません。

私は通常、次のようなものを書きます。

  private boolean certified;

  public boolean isCertified() {
    return certified;
  }

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

だから私は疑問に思います:

  • 名前付きのプロパティisXXXと getterisXXXの代わりにisIsXXX: は有効な Java Bean 定義ですか?

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

ありがとう

4

5 に答える 5

10

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

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

クラスのプロパティは、クラスのメソッド (特定のパターンにちなんで名付けられた) によって識別されます。

フィールドは無関係です。実際、プロパティのフィールドが存在する必要さえありません。

そうは言っても、プロパティ名にちなんでフィールドに名前を付けるのは良い習慣です。フィールドにアクセスする必要があるツール (IDE でのリファクタリングのサポートなど) がフィールドを正しく処理する可能性は高くなります。

isXXX という名前のプロパティと isIsXXX ではなく isXXX であるゲッターを持つ: それは有効な Java Bean 定義ですか?

いいえ、プロパティのゲッターにisXXXisIsXXX()(ブール値の場合) またはが必要getIsXXX()です。

しかし、また逆です。

メソッドがある場合:

boolean isXyz()

次に、読み取り可能なプロパティがありますxyz

方法があれば

boolean isIsXyz()

次に、読み取り可能なプロパティがありますisXyz

詳細については、Introspectorクラス、チュートリアル、または JavaBeans 仕様を参照してください。

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

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

于 2013-06-12T13:18:16.793 に答える
4
private boolean certified;

public boolean isCertified() {
    return certified;
}

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

大丈夫です。oracle.docsで確認できる変数名の詳細

于 2013-06-12T13:18:14.743 に答える
1

プライベート フィールドが何と呼ばれるかは問題ではありません。それが、セッターとゲッターがそこにある理由です。

于 2013-06-12T13:16:03.633 に答える