Viene visualizzato un errore ClassCastException
durante l'esecuzione a causa dell'implicazione implicita di d in una doppia quando si esegue il codice. Tuttavia, se cambio riferimento a d in Object[]
, non può essere un parametro della funzione impostata. Se cambio la funzione set per accettare un Object[]
allora tutto funziona correttamente, ma poi la classe fallirà in fase di esecuzione se qualcuno chiama impostato su un oggetto che non è di tipo N
.Restituzione di una matrice da una classe generica
Ho bisogno di una soluzione che possa get()
il vecchio array (o un suo clone) e che possa dati set()
in un nuovo array.
public class Foo<N> {
public static void main(String[] args) {
Foo<Double> foo = new Foo<Double>();
Double[] d = foo.get();
// do stuff to d ...
foo.set(d);
}
N[] data;
public Foo() {
data = (N[]) new Object[2];
}
public N[] get() {
return (N[]) data;
}
public void set(N[] data) {
this.data = data;
}
}
Possibile duplicato di [Come creare un array generico in Java?] (Http://stackoverflow.com/questions/529085/how-to-create-a-generic-array-in-java) – Julien
Non è un duplicato di quello q. – avisnacks
è possibile utilizzare questo http: // stackoverflow.it/a/3403976/2513573 per estrarre il tipo e Array.newInstance per creare l'array – AdamSkywalker