Я получаю эту ошибку checkstyle:
'serverURL' hides a field
в этом
private static void setServerURL(final String serverURL) {
Utility.serverURL = serverURL;
}
В чем может быть причина и как его решить?
Я получаю эту ошибку checkstyle:
'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;
}
}
Я думаю, что в конструкторах и сеттерах очень часто встречается, что имя заданного поля совпадает с именем параметра setter. Вот почему я рекомендую эту конфигурацию:
<module name="HiddenField" >
<property name="ignoreSetter" value="true" />
<property name="ignoreConstructorParameter" value="true" />
</module>
Таким образом, все остальные случаи скрытого поля по-прежнему запрещены.
Параметр и статическое поле имеют одно и то же имя. Просто переименуйте один из них.
Некоторые люди следуют соглашению об именах, которое префикрует все параметры с помощью p
. Тогда у вас будет serverURL
в качестве имени поля и pServerURL
в качестве имени параметра.
Или вы можете просто отключить проверку.
Я разрешил его, отключив его в eclipse. Я искал, как это сделать, когда я приземлился на этой странице. Я не нашел ответ в 10 самых популярных запросов Google, поэтому мне пришлось разобраться с этим. Для тех, кто ищет это, вот как я это сделал:
Открыть
Затмение > Настройки > Checkstyle
Найдите конфигурацию checkstyle, которую вы используете (возможно, вы установили ее или используете по умолчанию, и в этом случае лучше создать собственную копию, а затем отредактировать ее). Выберите это, а затем нажмите кнопку "Настройка" справа. Найдите в списке следующую конфигурацию:
Проблемы с кодированием > Скрытое поле
Откройте конфигурацию (в пользовательском интерфейсе есть кнопка "открыть" ).
Снимите флажок "Декларация параметров". Нажмите "ОК" , затем "ОК" , а затем "ОК" .
Просто измените имя параметра ur в методе ур
private static void setServerURL(final String serverURL) {
Utility.serverURL = serverURL;
}
to
private static void setServerURL(final String serverURLXYZ) {
Utility.serverURL = serverURLXYZ;
}
Enjoy...
Джигар Патель
Какая-то глупая ошибка, но вот простое исправление, которое я вставил в мои сеттеры:
было:
public void setName(String name) {
this.name = name;
}
обновлено:
public void setName(String val) {
this.name = val;
}