w realizacji ogólnej stosu następujące idiom jest używany i działa bez problemuodlewania obiektu [] na tablicę typu referencyjnych Java
public class GenericStack<Item> {
private int N;
private Item[] data;
public GenericStack(int sz) {
super();
data = (Item[]) new Object[sz];
}
...
}
Jednak przy próbie następuje, powoduje ClassCastException
String[] stra = (String[]) new Object[4];
Exception in thread "main" java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to [Ljava.lang.String;
Jak to wyjaśnić?
Łańcuch nie dziedziczy z elementu, w związku z czym oddanie nie jest możliwe. – Piovezan
@Piovezan 'String' i' Item' nie znajdują się w tej samej linii. – Dukeling
'nowa GenericStack (10)' działa, ale jeśli spróbujesz 'String [] stra = new GenericStack (10).getData(); '(implementuj odpowiedni program pobierający), kończy się niepowodzeniem z klasą ClassCastException. Tak więc nie "naprawdę" działa, obsada nie została zrobiona magicznie. –