Есть задача отображения объекта внешнему классу, например массива. Но без возможности редактирования во внешнем классе
Пример геттера
private int[] arr;
public int[] getArr()
{
return arr;
}
вопрос: данный класс ведь передаст ссылку на объект, что позволяет им управлять во внешнем классе? Т.е. необходимо создавать клон объекта , чтобы не передать управление ?
Нужен именно обычный массив? Тогда arr.clone()
.
Если можно коллекцию, то на основе массива можно не модифицируемую коллекцию создать:
List<Integer> items = Collections.unmodifiableList(Arrays.stream(arr).boxed().collect(Collectors.toList()));
Или из Guava ImmutableList
:
ImmutableList<Integer> values = ImmutableList.copyOf(Arrays.stream(arr).boxed().collect(Collectors.toList()));
Да, в случае объекта передается ссылка, любой объект - ссылочный тип. У вас несколько путей в этом случае: 1.Использовать клонирование объекта и передавать клон. Плюс в том, что помогает всегда. Минус в том, что вы плодите объекты. 2.Модификатор final. Плюсы в быстродействии и потокобезопасности в комплекте, никаких лишних объектов. минусы в том, что не подойдет для всех объектов, например, для массива это не поможет. Не всегда есть возможность создавать такие переменные. 3.Возможно вы передаете объекты типа Integer, Long итд. Тогда можно просто передавать примитивы, там ссылок нет и изменений никаких не сделаешь. Плюсы и минусы слону понятны.
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Собираю APK через эмулятор терминала Termux прямо на устройстве Android из-за отсутствия нормального ПКИспользую измененный мной скрипт с https://github
Суть вопроса таковаНапример есть метод:frame
Добавляю данные в таблицу методом onClick
Не удается подключить css файл stylecss, который находится в папке css, html его просто не видит