汎用スタックの実装では、次のイディオムが使用され、問題なく動作します
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;
これをどう説明しますか?