java object, приведение типов

102
03 декабря 2021, 15:00

Как в Java Object хранит переменные любого типа? т.е. я могу сказать, что

Object ob1 = 1;
Object ob2 = 'x';

В одном случае объекту присваиваем целочисленный тип в другом символ и т.д. А как это храниться в объекте? Насколько я знаю Object это обычный класс, т.е. у него есть методы, и возможно переменные? Но что вообще происходит, когда я говорю ob1 = 1? Как мы объекту присваиваем примитивный тип? По идее запускается не явное преобразование вроде ob1 = (Object)1, но опять же таки что оно делает?

Если мы конвертируем примитивы, то там все понятно. Если мы конвертируем один объект в другой, тоже понятно. Но как из примитива мы что то конвертируем в объект?

Ну и к слову, что происходит, когда используются Integer или String? И почему Object, который является родителем для Integer и String может содержать и числа и строки, а сами Integer и String не могут, хотя должны по факту расширять функционал Object, а не урезать его.

Answer 1
Integer temp = new Integer(1);
Object ob1 = temp;
Answer 2

Автоупаковка

Это автоматическая инкапсуляция примитивного типа в эквивалентную ему класс-обёртку всякий раз, когда требуется объект данного типа. Это одно из существенных изменений, внесенных в JDK 5.

Autoboxing происходит:

  • При присвоении значения примитивного типа переменной соответствующего класса-обёртки.
  • При передаче примитивного типа в параметр метода, ожидающего соответствующий ему класс-обёртку.

Читать далее: https://habr.com/ru/post/329498/

READ ALSO
Считать размер ID3v2 тегов из mp3 файла (Java, побитовые операции)

Считать размер ID3v2 тегов из mp3 файла (Java, побитовые операции)

Как можно считать размер тегов из ID3v2 заголовка с помощью Java?

187
Как инициализировать размер массива с использованием конструктора?

Как инициализировать размер массива с использованием конструктора?

Я хочу при вызове конструктора задать размер массива, находящегося в теле классаДля этого я пытаюсь использовать указатель p, который бы забирал...

170
Не получается обернуть HANDLE в std::unique_ptr

Не получается обернуть HANDLE в std::unique_ptr

Появилось желание обернуть в RAII классы ряд объектов из WinAPI (хендлы, сертификаты и тд

98
Qt. Частичная перерисовка области

Qt. Частичная перерисовка области

У меня будет простое банковское приложениеИ я решил сделать такой интерфейс:

75