5

Eclipseにはオプションがあります(設定 - > Java - >コードスタイル)

戻り値がブール値の場合、ゲッターの「is」接頭辞が許可されます。

私の質問は、戻り値がラッパー クラス (ブール値) の場合、なぜプレフィックスを付けないのですか?

4

4 に答える 4

9

これは単純に、Java Bean の仕様/規則/実装によると、プレフィックスはプリミティブ オブジェクトのみを対象としているためです。

PropertyDescriptor クラスのソース (getRealMethod) を見ることができます。

 if (readMethodName == null) {
    Class type = getPropertyType0();
    if (type == boolean.class || type == null) {
        readMethodName = "is" + getBaseName();
    } else {
        readMethodName = "get" + getBaseName();
    }
    }

したがって、日食はこれにのみ準拠しています。

編集: プロパティ記述子がこのように作成される理由は別の問題です。おそらく Java 関係者は、戻り値の型が null の可能性と "is" プレフィックスが誤解を招く可能性があると判断しました。

于 2013-09-26T09:07:55.053 に答える
0

プリミティブ型では、とbooleanのみ可能です。ただし、 Object 型を使用する場合は、も受け入れられます。通常、このようなシナリオには適していません。truefalseBooleannull

  public class MyClass{
   private boolean status;
   private Boolean sts;

   public boolean isStatus(){
      return status;
   }

   public Boolean getSts(){
      return sts;        
   }

   // setters
  }

resultを呼び出すとisStatus、確実に true または false になります。それは理にかなっています。しかし、isSts戻ることができnullます。これは論理的ではないものです。これが、型に get を使用する理由かもしれませんObject

于 2013-09-26T08:57:28.077 に答える
0

プロパティの getter および setter 命名規則のisFoo/setFooの特別なケースが確立されたとき、ブール値は、ブール値のプリミティブ型よりも他のすべてのオブジェクト型により密接に関連していると見なされました。getFooの結果はnull になる可能性がありますが、isFoo の結果は null になりません。

Java 言語がプリミティブ型の自動ボックス化およびボックス化解除を行うようになったので、ブール変数がブール プロパティと相互作用する可能性が高くなりますが、ブールプロパティを null に設定することは奇妙で、通常は厄介なユース ケースのままであるため、ブール プロパティは珍しいままです

于 2013-09-26T09:08:10.607 に答える