Универсальный массив без отражения - PullRequest
0 голосов
/ 01 января 2019

Я уже читал некоторые из ответов, следуя которым, я знаю, что 1 метод создания универсального массива использует рефлексию, но что из того, что я пишу ниже для универсального метода создания массива?Это потенциально опасно в любом случае?

public <E> E[] getArray(int size, Class<E> e) { 

          E[] arr = (E[])new Object[size];    
          return arr;    

}

Ответы [ 2 ]

0 голосов
/ 01 января 2019

Массивы и обобщения являются понятиями двух разных эпох Java, которые не предназначены для смешивания.Если вам нужна универсальность типов, почему бы не использовать ArrayList вместо массива?

0 голосов
/ 01 января 2019

Это просто не работает.

Компилятор позволит вам написать:

String[] sarr = new YourClass().getArray(10,String.class);

, но во время выполнения вы получите исключение:

java.lang.ClassCastException: [Ljava.lang.Object;нельзя привести к [Ljava.lang.String;

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...