web-dev-qa-db-ja.com

Checkstyle:「隠しフィールド」エラーの解決方法

私はこのチェックスタイルエラーを受け取っています:

'serverURL' hides a field

これで

 private static void setServerURL(final String serverURL) {
    Utility.serverURL = serverURL;
 }

理由は何ですか、それを解決する方法は?

51
Romi

このメソッドで使用できるserverURLが既に定義されている変数があります(受け入れている仮パラメーターに追加)。これは「シャドウイング」と呼ばれます。

ほとんどのJavaプログラマーはこのチェックをオフにしていると思う。

たとえば、これによりエラーが発生します。

public class Foo {
  private int bar = 0;

  public void someMethod(int bar) {
    // There are two bars!  All references in this method will use the parameter bar,
    // unless they are explicitly prefixed with 'this'.
    this.bar = bar;
  }
}
47
Cory Kendall

コンストラクターおよびセッターでは、設定フィールド名がセッターパラメーター名と同じであることが非常に一般的だと思います。これが、この構成を推奨する理由です。

<module name="HiddenField" >
    <property name="ignoreSetter" value="true" />
    <property name="ignoreConstructorParameter" value="true" />
</module>

このように、他の非表示フィールドのケースは依然として禁止されています。

35
WonderCsabo

パラメーターと静的フィールドの名前は同じです。それらのいずれかの名前を変更してください。一部の人々は、すべてのパラメーターの前にpを付ける命名規則に従います。次に、フィールド名としてserverURLを、パラメーター名としてpServerURLを使用します。または、単にチェックをオフにすることもできます。

8
barfuin

Eclipseで無効にして解決しました。このページに着いたとき、私はそれを行う方法を探していました。私はトップ10のGoogleクエリで答えを見つけられなかったので、難しい方法を見つけなければなりませんでした。それを探している人のために、ここに私がやった方法があります:

開いた

Eclipse> Preferences> Checkstyle

使用しているチェックスタイルの構成を見つけます(デフォルトを設定しているか、デフォルトを使用している場合は、独自のコピーを作成して編集することをお勧めします)。それを選択し、右側の構成ボタンをクリックします。リストで次の構成を見つけます。

コーディングの問題>隠しフィールド

構成を開きます(UIには「開く」というボタンがあります)。

「パラメータ宣言」の選択を解除します。 [OK]をクリックし、[OK]をクリックしてから[OK]をクリックします。

7
T A

Urメソッドでurパラメータ名を変更するだけです

private static void setServerURL(final String serverURL) {
Utility.serverURL = serverURL;
}

private static void setServerURL(final String serverURLXYZ) {
Utility.serverURL = serverURLXYZ;
}

楽しい...

ジガー・パテル

5
user3550483

ちょっとした愚かなエラーですが、これを修正するためにセッターに入れた簡単な修正は次のとおりです:

だった:

public void setName(String name) {
  this.name = name;
}

更新しました:

public void setName(String val) {
  this.name = val;
}
1
Forrest