Есть ли способ предотвратить изменение данных в unmodifiableList в приведенном ниже сценарии? - PullRequest
1 голос
/ 20 февраля 2020

Здесь у меня есть сценарий, в котором я хочу создать unmodifiableList таким образом, чтобы никакая другая часть программы не могла изменить его начальные значения.

Вот фрагмент кода, чтобы дать некоторое представление о моей проблеме.

public class Test {

    public static void main(String[] args) {
        List<String> unmodifiableList = new ArrayList<String>();
        unmodifiableList.add("test1");
        unmodifiableList.add("test2");
        unmodifiableList = Collections.unmodifiableList(unmodifiableList);
        List<String> modifiableList = new ArrayList<String>();
        modifiableList.addAll(unmodifiableList);
        unmodifiableList = modifiableList; 
        unmodifiableList.add("test3");
        for (String s : unmodifiableList) {
          System.out.println(s);
        }
    }
}

Вывод: test1 test2 test3

Ожидаемый вывод: test1 test2

1 Ответ

0 голосов
/ 20 февраля 2020

Можете ли вы попробовать ниже.

    final List<String> unmodifiableList1 = Collections.unmodifiableList(unmodifiableList);

, чтобы избежать создания дополнительного списка, попробуйте ниже.

final List<String> finalList = Collections.unmodifiableList(Arrays.asList("test1", "test2"));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...