Все об автобоксинге в java

max аватар
12

Боксинг  - неявная операция, которая принимает на вход примитивный тип (int, float, boolean..) и автоматически помещает его внутрь объекта соответствующего ссылочного типа (класса-враппера). Например (int -> Integer). 

Анбоксинг - обратная операция, которая принимает на вход ссылочный тип, скажем Integer, и конвертирует его обратного в примитивный тип, int.

 

info picture Коллекции не могут содержать примитивные типы данных (int, float, boolean)

 

Из этого следует, что без боксинга, пришлось бы добавлять примитивы в коллекции, предварительно оборачивая их в объектный тип:

 

Случаи применения боксинга/анбоксинга:

 Присваивания - конвертации при присваиваниях случаются в тех случаях, когда значение выражения присваивается к переменной.  Если тип выражения не совпадает с типом переменной и нет риска потери данных, автоматически происходит конвертация. 

Вызовы методов - в случаях, когда вызван метод, а типы аргументов не совпадают с переданными, возможны некоторые преобразования. Возможные конвертации:

 

  1. Идентичная конверсия - скажем передан Integer, а тип параметра - int
  2. Расширение диапазона примитива - передан int, а тип параметра - long
  3. Расширение ссылочного типа - передан Integer, а тип параметра - Long
Комбинация боксинга и дженериков позволяет писать такой код:

Конец
Сэмюэл Смайлс абсолютно уверен в том, что из-за отсутствия контроля над собой многие люди всю жизнь проводят в борьбе с трудностями, которые сами же и создали. Их собственная упрямая жестокость не дает им добиться успеха.

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

CAPTCHA
Чтобы оставить комментарий, введите пожалуйста код, изображенный на картинке
Image CAPTCHA
Введите символы, изображенные на картинке