2016-08-23 16 views
1

Javaクラスのブール型変数の正しいgetメソッドの規則とは何ですか?例えば、Javaブール型読み込みメソッドの命名方法

private boolean qExist; 

public boolean isqExist() { 
    return qExist; 
} 
public void setqExist(boolean qExist) { 
    this.qExist = qExist; 
} 

上記の方法は、eclipseによって生成されます。 wsimportのが「qExistは」

public boolean isQExist() { 
    return qExist; 
} 
public void setQExist(boolean qExist) { 
    this.qExist = qExist; 
} 

ジャクソンJSONシリアライザは、それ以外の場合は、変数の値( - すべて小文字この場合「qexist」)を付加する第1の方法は、クラス中に存在することが期待としての.xsdファイルに生成し、一方JSONオブジェクトに追加します。それがweb uiに渡されたとき、javascriptは 'qExist'を期待しているので変数を知らない。

これは、ブール変数が2つ以上の小文字で始まる場合、ジャクソンは上記の2番目の方法を使用するため、バグのバグかもしれません。

私はジャクソンオブジェクトマッパーにセッター/ゲッター/値のメソッドを探すのではなくフィールドを見て欲しいと言って問題を解決しました。

+5

「Q」を大文字にするのは通常の方法です。 Eclipseはそれほど明るくない。 – Bohemian

+0

isQExistとsetQExistは厳密な型付き言語の大部分で続く標準命名規則です – Kenshin

+0

英語での注釈として... 'doesQExist'は' isQExist'より文法的(そしてもっと自然な*)として一般的に受け入れられています。私は、Java bean仕様のあまり有用でない側面に過度に準拠するのではなく、可読性を最大限にすることを好みます。あなたが発見したように、Jacksonはフィールドを直接参照するよう指示することができます。 – nbrooks

答えて

1

通常、あなたはすべての新しい単語を大文字にしないだろう - に関係なく、それはQが何を表しているん好奇心のうち

0

を持っているどのように多くの手紙? 「正しい」という用語は、リフレクションでゲッター/セッティングをどのように使用しているかによって異なります。私が使用します。

public boolean isQExist() { 
    return qExist; 
} 
public void setQExist(boolean qExist) { 
    this.qExist = qExist; 
} 
+0

実際にgetterとsetterメソッドは、wsimportからmavenプラグインによって生成されます。私は、Jsonアノテーションを追加することは、生成されたコードの良い習慣ではないと思います。入力のおかげで。私は単なる小文字と複数のものをシリアライズしているときにジャクソンライブラリが失敗することを指摘したい。 –

0

あなたが直接フィールドを使用する必要がしたくなかった場合は、あなただけのPOJO構造に密結合を削除し、注釈を使用することができます。

public static final String BLAH_PROPERTY = "qExists"; 

private boolean blah; 

@JsonProperty(BLAH_PROPERTY) 
public boolean isBlah() { 
    return blah; 
} 

@JsonProperty(BLAH_PROPERTY) 
public void setBlah(boolean blah) { 
    this.blah = blah; 
} 
関連する問題