Код: Выделить всё
Bar[] bars = new Bar[];
Но, как предложено dimo414 в ответ на этот вопрос (Java: создание универсального массива), я могу сделать следующее:
Код: Выделить всё
Bar[] bars = (Bar[]) new Object[];
В комментариях к ответу dimo414 некоторые люди утверждают, что использование этой конструкции может вызвать проблемы в определенных ситуациях, а другие говорят, что это нормально, поскольку это единственная ссылка на массив. это бары нужного типа уже.
Я немного не понимаю, в каких случаях это нормально, а в каких случаях это может доставить мне неприятности. Например, комментарии newacct и Аарона МакДейда прямо противоречат друг другу. К сожалению, поток комментариев в исходном вопросе просто заканчивается вопросом без ответа: «Почему это «больше не правильно»?», Поэтому я решил создать для него новый вопрос:
Если массив bars содержит только записи типа Bar, могут ли возникнуть какие-либо проблемы во время выполнения при использовании массива или его записей? Или единственная опасность заключается в том, что во время выполнения я мог бы технически привести массив к чему-то другому (например, String[]), что затем позволило бы мне заполнить его значениями типа, отличного от Bar?
Я знаю, что вместо этого могу использовать Array.newInstance(...), но меня особенно интересует приведенная выше конструкция приведения типов, поскольку , например, в GWT опция newInstance(...) недоступен.
Подробнее здесь: https://stackoverflow.com/questions/178 ... -type-cast