4. Особенности массивов и коллекций


4. Особенности массивов и коллекций

• Массивы: В Java массивы ковариантны. Это означает, что массив Integer[] считается подтипом Number[]. Это позволяет присвоить массив целых чисел переменной типа массив чисел, но попытка записать в такой массив Double приведет к ошибке ArrayStoreException во время выполнения.

• Коллекции и Дженерики: В отличие от массивов, обобщения (generics) инвариантны. List<Integer> не является подтипом List<Number>.

    ◦ Стирание типов (Type Erasure): Обобщения реализованы через стирание типов. Это означает, что List<Integer> и List<String> во время выполнения представлены одним и тем же классом List. Процесс компиляции заменяет параметры типов на их границы (или Object) и вставляет явные приведения типов (касты) там, где это необходимо.

    ◦ Unchecked casts: Преобразование "сырого" типа (raw type) в параметризованный тип вызывает предупреждение компилятора (unchecked warning), так как компилятор не может гарантировать безопасность типов.

Автор: к.п.н., Румянцев Сергей Александрович, доцент Финансового университета при Правительстве РФ; доцент ОЧУВО Международного инновационного университета; Консалтинг, управление разработкой ПО; системный и бизнес анализ; менеджмент; аналитиз данных; управление ИТ. Телефон для связи +79269444818 (мессенджеры)   Короткая ссылка:


4. Особенности массивов и коллекций

• Массивы: В Java массивы ковариантны. Это означает, что массив Integer[] считается подтипом Number[]. Это позволяет присвоить массив целых чисел переменной типа массив чисел, но попытка записать в такой массив Double приведет к ошибке ArrayStoreException во время выполнения.

• Коллекции и Дженерики: В отличие от массивов, обобщения (generics) инвариантны. List<Integer> не является подтипом List<Number>.

    ◦ Стирание типов (Type Erasure): Обобщения реализованы через стирание типов. Это означает, что List<Integer> и List<String> во время выполнения представлены одним и тем же классом List. Процесс компиляции заменяет параметры типов на их границы (или Object) и вставляет явные приведения типов (касты) там, где это необходимо.

    ◦ Unchecked casts: Преобразование "сырого" типа (raw type) в параметризованный тип вызывает предупреждение компилятора (unchecked warning), так как компилятор не может гарантировать безопасность типов.

https://webprogr.ru/~BS47P
Короткая ссылка на новость:https://webprogr.ru/~BS47P


Последние новости

4. Особенности массивов и коллекций


4. Особенности массивов и коллекций

• Массивы: В Java массивы ковариантны. Это означает, что массив Integer[] считается подтипом Number[]. Это позволяет присвоить массив целых чисел переменной типа массив чисел, но попытка записать в такой массив Double приведет к ошибке ArrayStoreException во время выполнения.

• Коллекции и Дженерики: В отличие от массивов, обобщения (generics) инвариантны. List<Integer> не является подтипом List<Number>.

    ◦ Стирание типов (Type Erasure): Обобщения реализованы через стирание типов. Это означает, что List<Integer> и List<String> во время выполнения представлены одним и тем же классом List. Процесс компиляции заменяет параметры типов на их границы (или Object) и вставляет явные приведения типов (касты) там, где это необходимо.

    ◦ Unchecked casts: Преобразование "сырого" типа (raw type) в параметризованный тип вызывает предупреждение компилятора (unchecked warning), так как компилятор не может гарантировать безопасность типов.

Рейтинг@Mail.ru