Ich erhalte diesen Checkstyle-Fehler:
'serverURL' hides a field
in diesem
private static void setServerURL(final String serverURL) {
Utility.serverURL = serverURL;
}
Was könnte der Grund sein und wie kann man ihn beheben?
Romi
Ich erhalte diesen Checkstyle-Fehler:
'serverURL' hides a field
in diesem
private static void setServerURL(final String serverURL) {
Utility.serverURL = serverURL;
}
Was könnte der Grund sein und wie kann man ihn beheben?
Cory Kendall
Es ist bereits eine Variable definiert serverURL
die dieser Methode zur Verfügung steht (zusätzlich zu den formalen Parametern, die Sie akzeptieren). Dies wird als „Schattenbildung“ bezeichnet.
Ich denke, die meisten Java-Programmierer schalten dieses Häkchen aus, weil es nicht wirklich verwirrend ist.
Dies würde beispielsweise den Fehler auslösen:
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;
}
}
Wie Sie sehen, ist die Methode statisch, ich kann dies nicht verwenden
– Romi
15. Oktober 2011 um 6:10 Uhr
@CoryKendall Was schlagen Sie als Lösung für dieses Problem vor?
– IgorGanapolsky
20. Februar 2014 um 16:58 Uhr
Die Lösung besteht darin, das Häkchen zu deaktivieren oder den Namen eines der zu ändern bar
s zu etwas anderem.
– Cory Kendall
7. November 2016 um 20:34 Uhr
Diese Antwort könnte verbessert werden, indem angegeben wird, wie dieser Prüfstil deaktiviert werden soll.
– wachr
17. Januar 2018 um 19:31 Uhr
Ich denke, es ist bei Konstruktoren und Settern sehr verbreitet, dass der Set-Feldname mit dem Setter-Parameternamen identisch ist. Deshalb empfehle ich diese Konfiguration:
<module name="HiddenField" >
<property name="ignoreSetter" value="true" />
<property name="ignoreConstructorParameter" value="true" />
</module>
Auf diese Weise sind die anderen Hidden-Field-Fälle immer noch verboten.
funktioniert immer noch nicht mit den obigen Eigenschaften in meiner Checkstyle-XML-Datei.
– Gaurav
21. Mai 2019 um 14:33 Uhr
Der Parameter und das statische Feld haben denselben Namen. Benennen Sie einfach einen von ihnen um. Einige Leute folgen einer Namenskonvention, die allen Parametern das Präfix voranstellt p
. Dann hättest du serverURL
als Feldname und pServerURL
als Parametername. Oder Sie können die Überprüfung einfach deaktivieren.
Ich habe es gelöst, indem ich es in Eclipse deaktiviert habe. Ich habe gesucht, wie das geht, als ich auf dieser Seite gelandet bin. Ich habe die Antwort in den Top 10 der Google-Abfrage nicht gefunden, also musste ich es auf die harte Tour herausfinden. Für jemanden, der danach sucht, hier ist, wie ich es gemacht habe:
Offen
Eclipse>Einstellungen>Checkstyle
Suchen Sie die Checkstyle-Konfiguration, die Sie verwenden (möglicherweise haben Sie diese eingestellt oder Sie verwenden die Standardeinstellung. In diesem Fall ist es besser, eine eigene Kopie zu erstellen und diese dann zu bearbeiten). Wählen Sie das aus und klicken Sie dann auf die Schaltfläche Konfigurieren auf der rechten Seite. Suchen Sie die folgende Konfiguration in der Liste:
Codierungsprobleme > Verstecktes Feld
Öffnen Sie die Konfiguration (in der Benutzeroberfläche gibt es eine Schaltfläche namens „Öffnen“).
Deaktivieren Sie „Parameterdeklaration“. Klicken Sie auf OK, dann auf OK und dann auf OK.
Ändern Sie einfach Ihren Parameternamen in Ihrer Methode
private static void setServerURL(final String serverURL) {
Utility.serverURL = serverURL;
}
zu
private static void setServerURL(final String serverURLXYZ) {
Utility.serverURL = serverURLXYZ;
}
Genießen…
Jigar Patel
ahhhhhhhhhhhh!
– Tucker
30. Juni 2021 um 3:22 Uhr
Wald
Irgendwie dummer Fehler, aber hier ist die einfache Lösung, die ich in meine Setter gesteckt habe, um ihn zu beheben:
war:
public void setName(String name) {
this.name = name;
}
Aktualisiert:
public void setName(String val) {
this.name = val;
}
ahhhhhhhhhhhh!
– Tucker
30. Juni 2021 um 3:22 Uhr