これは、定義済みのクラスを使用した場合の私のコードの外観です。
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;
今、私はより一般的である必要があります:一般的なクラス名(文字列として、つまり「TheChosenOne」)から始めて、同じことをする必要がありますが、キャスト部分をどのように行うべきかわかりません..
私がやろうとしていることの例を作るために:
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;
ここで「Class.forName()...」の部分を取りました。
助言がありますか?よろしくお願いします。