私はこのチェックスタイルエラーを受け取っています:
'serverURL' hides a field
これで
private static void setServerURL(final String serverURL) {
Utility.serverURL = serverURL;
}
理由は何ですか、それを解決する方法は?
このメソッドで使用できる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;
}
}
コンストラクターおよびセッターでは、設定フィールド名がセッターパラメーター名と同じであることが非常に一般的だと思います。これが、この構成を推奨する理由です。
<module name="HiddenField" >
<property name="ignoreSetter" value="true" />
<property name="ignoreConstructorParameter" value="true" />
</module>
このように、他の非表示フィールドのケースは依然として禁止されています。
パラメーターと静的フィールドの名前は同じです。それらのいずれかの名前を変更してください。一部の人々は、すべてのパラメーターの前にp
を付ける命名規則に従います。次に、フィールド名としてserverURL
を、パラメーター名としてpServerURL
を使用します。または、単にチェックをオフにすることもできます。
Eclipseで無効にして解決しました。このページに着いたとき、私はそれを行う方法を探していました。私はトップ10のGoogleクエリで答えを見つけられなかったので、難しい方法を見つけなければなりませんでした。それを探している人のために、ここに私がやった方法があります:
開いた
Eclipse> Preferences> Checkstyle
使用しているチェックスタイルの構成を見つけます(デフォルトを設定しているか、デフォルトを使用している場合は、独自のコピーを作成して編集することをお勧めします)。それを選択し、右側の構成ボタンをクリックします。リストで次の構成を見つけます。
コーディングの問題>隠しフィールド
構成を開きます(UIには「開く」というボタンがあります)。
「パラメータ宣言」の選択を解除します。 [OK]をクリックし、[OK]をクリックしてから[OK]をクリックします。
Urメソッドでurパラメータ名を変更するだけです
private static void setServerURL(final String serverURL) {
Utility.serverURL = serverURL;
}
に
private static void setServerURL(final String serverURLXYZ) {
Utility.serverURL = serverURLXYZ;
}
楽しい...
ジガー・パテル
ちょっとした愚かなエラーですが、これを修正するためにセッターに入れた簡単な修正は次のとおりです:
だった:
public void setName(String name) {
this.name = name;
}
更新しました:
public void setName(String val) {
this.name = val;
}