Я хотел бы знать, есть ли способ сделать массив из SuperType
и массив из SubType
. Как так:Обманывание JVM в литейные массивы
SubType[] subArray = (SubType[])someSuperTypeArray;
Я знаю, что во время выполнения этого бросает ClassCastException
. Способ преобразования массива состоит в том, чтобы скопировать его в другой массив. В моем случае копирование это не вариант.
Могу ли я обмануть JVM в убеждении, что актер действителен и обходит проверки типа класса? Создание ссылки на массив из SuperType
, через который он рассматривается как некоторый массив SubType
. (Возможно, перед опасностью необъяснимых ошибок)
Что означает «Мне нужно преобразовать массив, чтобы скопировать его в другой массив» означает? –
К сожалению, это была опечатка на моем конце. – wintergrascph
Нет трюков - пройдите длинный путь. Создайте новый массив типа, который вы хотите, перейдете к суперклассу и произнесите каждую ссылку, как вы ее назначаете. – duffymo