Рассуждения по поводу ArrayStoreException
Підписуйтеся на Telegram-канал «DOU #tech», щоб не пропустити нові технічні статті
Добрый день всем. Может быть вопрос больше подходит для stackoverflow, но все таки попытаюсь спросить здесь.
Вопрос, собственно, имеет более «философский». А состоит он в следующем. Рассмотрим пример кода:
class A {...}; class B extends A {...}; //in main: B[] x1 = new B[10]; A[] x2 = x1; x2[0] = new A();
Стандарт разрешает подобное присваивание. Компилятор не выдает никаких ошибок. Но! В процессе выполнения мы получаем ArrayStoreException. Не понятен такой ньюанс: почему компилятор пропускает такое? Почему нельзя отлавливать эту ошибку на моменте компиляции? Или может такой «финт» используется где-то в других моментах?
17 коментарів
Додати коментар Підписатись на коментаріВідписатись від коментарів