Страницы

Поиск по вопросам

понедельник, 15 октября 2018 г.

Java getter для приватных объектов класса

Есть задача отображения объекта внешнему классу, например массива. Но без возможности редактирования во внешнем классе Пример геттера
private int[] arr; public int[] getArr() { return arr; }
вопрос: данный класс ведь передаст ссылку на объект, что позволяет им управлять во внешнем классе? Т.е. необходимо создавать клон объекта , чтобы не передать управление ?


Ответ

Нужен именно обычный массив? Тогда arr.clone()
Если можно коллекцию, то на основе массива можно не модифицируемую коллекцию создать:
List items = Collections.unmodifiableList(Arrays.stream(arr).boxed().collect(Collectors.toList()));
Или из Guava ImmutableList
ImmutableList values = ImmutableList.copyOf(Arrays.stream(arr).boxed().collect(Collectors.toList()));

Комментариев нет:

Отправить комментарий