Ответ
Типобезопасность (type safety) при работе с массивами в Java означает, что компилятор и среда выполнения (JVM) гарантируют, что в массив можно поместить только элементы его объявленного типа (или подтипа). Попытка сохранить объект несовместимого типа приводит к ошибке ArrayStoreException во время выполнения.
Как это работает:
-
Проверка при компиляции: Компилятор предотвращает очевидные ошибки.
String[] strArray = new String[10]; strArray[0] = "Hello"; // OK strArray[1] = 42; // Ошибка компиляции: несовместимые типы -
Проверка во время выполнения (Runtime): Для случаев с ковариантностью массивов.
Object[] objArray = new String[5]; // Ковариантность: String[] является Object[] objArray[0] = "test"; // OK, String совместим с String[] objArray[1] = new Integer(100); // Выбросит ArrayStoreException во время выполнения! // JVM проверяет, что фактический тип массива (String[]) может хранить Integer.
Почему это важно:
- Надёжность: Предотвращает случайную порчу данных в массиве объектами неправильного типа.
- Предсказуемость: Избегает ошибок, которые сложно отладить.
- Отличие от generics: Массивы обеспечивают типобезопасность во время выполнения (reified), а generics (как
ArrayList<T>) — только на этапе компиляции (type erasure).