Изменяемые поля не должны быть "общедоступными" - PullRequest
0 голосов
/ 13 декабря 2018

Я получаю ошибку sonarQube ниже строки, какие-либо предложения экспертов, как решить эту проблему?Заранее спасибо

    protected static final String [] COLUMN_NAMES = new String[]{"date","customerNumber","customerName",
            "account","emailAdress","mobilePhoneNumber","emailStatus"};

Ответы [ 2 ]

0 голосов
/ 13 декабря 2018

Вы можете сделать COLUMN_NAMES приватным и просто вернуть его клон, как показано ниже:

private static final String [] COLUMN_NAMES = new String[]{"date","customerNumber","customerName",
        "account","emailAdress","mobilePhoneNumber","emailStatus"};

protected static String[] getCloneArray()
{
  return COLUMN_NAMES.clone();
}

Таким образом, ваш исходный массив не будет изменен.

0 голосов
/ 13 декабря 2018

Вы можете изменить этот массив на переменную private.

Затем добавьте метод static, который возвращает копию этого массива, или неизменный List, поддерживаемый этим массивом.

Например:

private static final String [] COLUMN_NAMES = new String[]{"date","customerNumber","customerName",
        "account","emailAdress","mobilePhoneNumber","emailStatus"};

protected static List<String> getColumnNames() {
    return Collections.unmodifiableList(Arrays.asList(COLUMN_NAMES));
}

Или вы можете заменить переменную массива неизменяемой List вместо использования метода.Это было бы более эффективно (поскольку List будет создаваться один раз, а не при каждом вызове метода static):

protected static List<String> COLUMN_NAMES = Collections.unmodifiableList(Arrays.asList("date","customerNumber","customerName",
        "account","emailAdress","mobilePhoneNumber","emailStatus"));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...