Как разрешается присваивать целые числа классу-оболочке Java? - PullRequest
0 голосов
/ 12 мая 2018

Как этот следующий код является законным и что это делает точно?

int i = new Integer(5);

1 Ответ

0 голосов
/ 12 мая 2018

Согласно Спецификации языка Java,

§5.2 Контексты присваивания

Контексты присваивания позволяют использовать одно из следующего:

  • преобразование идентификатора (§5.1.1)
  • преобразование расширяющегося примитива (§5.1.2)
  • преобразование расширяющего эталона (§5.1.5)
  • преобразование бокса (§5.1.7), за которым необязательно следует расширение эталонного преобразования
  • преобразование без упаковки (§5.1.8), необязательно, с последующим преобразованием примитива расширения.

Ваш код демонстрирует конвертацию без Integer в int. Спецификация языка говорит, что это разрешено, и это так, в противном случае вы не используете Java.

Для получения дополнительной информации о том, что такое распаковка конвертации, посетите здесь .Подводя итог, это в основном преобразование из ссылочного типа в его примитивный аналог.В этом случае Integer является ссылочным типом, а int является примитивным типом.

...