Объект c;а затем с = новое целое число (0);законны? - PullRequest
0 голосов
/ 15 июня 2019

Предположим, у нас есть переменная типа Object

Object c;

, и предположим, что мы хотим создать ее экземпляр с помощью оболочки.Является ли

c = new Integer(0);

законным?

Я думаю, это потому, что тип объекта является «отцом» всех классов, таких как Integer, который является классом Wrapper (upcast)

1 Ответ

6 голосов
/ 15 июня 2019

Да, переменная со ссылочным типом (например, Object) может содержать ссылку на экземпляр любого совместимого с присвоением ссылочного типа.Типы ссылок, совместимые с назначениями:

  • собственный тип ссылки на переменную (Object, в вашем примере).
  • любой подкласс этого типа (Integer в вашем примере,поскольку Integer является подклассом Object)
  • Если ссылочный тип переменной является интерфейсом, любой класс, реализующий этот интерфейс.

Иногда, кажется, код нарушает этиправила, такие как:

Object c = 0; // Works just fine

Это потому, что int 0 автоматически помещает в экземпляр Integer, а ссылка на этот экземпляр хранится в c.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...