поле частного объекта может быть окончательным, предупреждение NetBeans - PullRequest
0 голосов
/ 25 октября 2018

Я получаю предупреждение, связанное с объявлением одного из моих полей, и хотел бы знать, что будет хорошей практикой для его решения

public class ModeloCatalogo extends Modelo {

    private static ArrayList<String> excluidas = new ArrayList<>();
    ...bunch of irrelevant fields...

    private static void functionThatLoadsValuesIntoArrayList(){
        excluidas.add("String 1");
        ...
        excluidas.add("String n");
    }
    ...bunch of irrelevant methods...
}

В объявлении поля netbeans warns "поле может быть окончательным", который может быть решен как:

    private static ArrayList<String> EXCLUIDAS = new ArrayList<>();

Обратите внимание, что если не в верхнем регистре, NetBeans генерирует другое предупреждение из-за соглашений об именах.(добавлено в правку для ясности)

Это должно быть в верхнем регистре, как для соглашений об именах, что заставляет меня съеживаться, кажется неправильным.

Избавился от предупреждения, инициализируя массив внутри функциикоторый загружает значения в массив.

    private static ArrayList<String> excluidas;

    private static void functionThatLoadsValuesIntoArrayList(){
        excluidas  = new ArrayList<>();
        excluidas.add("String 1");
        ...

Но это снижает читабельность кода ИМХО.

Так что я подумал, как правильно избавиться от предупреждения?

1 Ответ

0 голосов
/ 25 октября 2018

NetBeans, вероятно, предлагает сделать поле final, поскольку вы присваиваете ему значение только во время инициализации и не назначаете его повторно.

Соглашение об именовании констант указано в Спецификация языка Java , которая гласит:

[...] и конечные переменные типов классов обычно могут быть последовательностью из одного или нескольких слов, аббревиатур или сокращений, все в верхнем регистрес компонентами, разделенными символами подчеркивания "_"

Однако утверждается , что изменяемые поля static final не должны считаться константами, и поэтому следует использовать обычное именование полей.

В более новых версиях NetBeans не должно отображаться описанное предупреждение о переименовании поля, если тип изменчив, см. этот комментарий .Убедитесь, что версия, которую вы используете, является актуальной, и вы не отключили эту проверку.


Но вы уверены, что поле должно быть static в первую очередь?Если метод functionThatLoadsValuesIntoArrayList может присвоить ему значение в вашем текущем проекте, то, возможно, поле не должно быть статичным, хотя это трудно определить с помощью этого небольшого фрагмента кода.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...