questo è ciò che il mio codice è se io uso una classe predefinita:JAVA - gettato utilizzando la classe ottenuta con il suo nome (valore stringa)
List<MyClass> result = new ArrayList<MyClass>();
try {
Query query = mgr.newQuery(MyClass.class);
for(Object obj : (List<Object>) query.execute()) {
result.add(((MyClass) obj));
}
}
....
return result;
ora ho bisogno di essere più generico: a partire da un nome di classe generica (come una stringa, vale a dire "TheChosenOne") Ho bisogno di fare la stessa cosa, ma non riesco a capire come dovrebbe essere fatta la parte cast ..
Solo per fare un esempio di quello che sto cercando di do:
String str = "TheChosenOne"; //this value may change
Class cls;
List<Object> result = new ArrayList<Object>();
try {
if(str.equals("TheChosenOne"))
cls = Class.forName("com.blabla.TheChosenOne");
else if(str.equals("Rabbit"))
cls = Class.forName("com.blabla.Rabbit");
else if(str.equals("Batman"))
cls = Class.forName("com.heroes.Batman");
else
cls = null;
if(cls != null){
Query query = mgr.newQuery(MyClass.class);
for(Object obj : (List<Object>) query.execute()) {
result.add(((???) obj)); //I need help here!
}
}
}
...
return result;
Ho preso la "Classe" .forname() ... "parte here.
Qualche suggerimento? Grazie in anticipo, cordiali saluti
'result.add ((Class.cast (obj))) 'è uguale a' result.add (obj) '. Perché l'elenco è di tipo Oggetto – cowls
@ cowls aha! hai ragione, modifico la risposta. –