In attuazione di una pila generico, il seguente linguaggio viene utilizzato e funziona senza alcun problemacolata Object [] a una matrice di tipo di riferimento in java
public class GenericStack<Item> {
private int N;
private Item[] data;
public GenericStack(int sz) {
super();
data = (Item[]) new Object[sz];
}
...
}
Tuttavia quando provo quanto segue, provoca un ClassCastException
String[] stra = (String[]) new Object[4];
Exception in thread "main" java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to [Ljava.lang.String;
Come spieghi questo?
La stringa non eredita dall'elemento, quindi il cast non è possibile. – Piovezan
@Piovezan 'String' e' Item' non sono nella stessa riga. – Dukeling
'new GenericStack (10)' funziona ma se si prova 'String [] stra = new GenericStack (10).getData(); '(implementa il getter corrispondente), fallisce con ClassCastException. Quindi non funziona "veramente", il cast non è stato fatto magicamente. –