29. Соб. І Что такое autoboxing? Зачем используется autoboxing? Альтернативы autoboxing? Типы-обертки для примитивных типов mutable или immutable?
1.
Що таке autoboxing?
Autoboxing – упакування – виконуване Java-компілятором автоматичне
перетворення значень примітивних типів у об’єкти відповідних їм
класів-обгорток. Наприклад, перетворення int на Integer, double на Double тощо.
І навпаки, перетворення об’єктів у значення відповідних примітивних типів
називається boxing
–
розпакування.
Компілятор Java застосовує авто
упаковку коли значення примітивного типу передається як параметр методу, який
очікує об’єкт відповідного класу-обгортки або присвоюється змінній відповідного
класу-обгортки.
Найпростіший приклад автобоксингу: Character ch =
'a';
2.
Для чого використовується autoboxing?
Для синхронізації, серіалізації, роботою з
колекціями та дженериками використовуємо об’єкти, а не примітивні типи. Аutoboxing позбавляє
зайвої роботи з перетворення «вручну» примітивів
у обгортки, автоматизуючи цей процес (і,
відповідно, код стає чистіший, більш гнучкий та легший для читання).
3.
Альтернативи autoboxing?
Аutoboxing є кращим з точки зору читабельності, але для
безпечніших перетворень краще використовувати статичний фабричний метод valueOf(). Н-д: intList.remove(Integer.valueOf(347)).
4. Типи-обгортки для
примітивних типів mutable или immutable?
Типи-обгортки є immutable. Незмінність надає їм
такі переваги над примітивами:
- автоматична синхронізація. Незмінні об’єкти
автоматично захищені потоками, що дозволяє уникнути накладних витрат,
спричинених використанням синхронізації.
- після створення стан незмінного об’єкта класу-обгортки
не можна змінити, тому немає можливості перевести їх у неузгоджений стан.
- посилання на незмінні об’єкти можна багаторазово
використовувати або кешувати без необхідності копіювати або клонувати їх,
оскільки їх стан не можна змінити після створення.
Коментарі
Дописати коментар