При реализации универсального стека используется следующая идиома, которая работает без проблем.
public class GenericStack<Item> {
private int N;
private Item[] data;
public GenericStack(int sz) {
super();
data = (Item[]) new Object[sz];
}
...
}
Однако, когда я пытаюсь сделать следующее, это вызывает ClassCastException
String[] stra = (String[]) new Object[4];
Exception in thread "main" java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to [Ljava.lang.String;
Как вы это объясните?
String
иItem
не находятся в одной строке. - person Bernhard Barker   schedule 14.06.2013new GenericStack<String>(10)
работает, но если вы попробуетеString[] stra = new GenericStack<String>(10).getData();
(реализовать соответствующий геттер), произойдет сбой с ClassCastException. Так что на самом деле это не работает, гипс не был сделан волшебным образом. - person Arnaud Denoyelle   schedule 14.06.2013Array.newInstance(Class clazz, Integer)
для общего создания вашего массива. ПримерArray.newInstance(String.class, sz)
. - person Arnaud Denoyelle   schedule 14.06.2013