Hallo,
ich habe ein Methode, die (mit einem Klassennamen als Parameter) aufgerufen wird und mit Hilfe des Klassennamen auf ein entsprechendes DAO zugreift, dort eine FindAll-Methode aufruft und die erhaltene Liste dann schließlich zurückgibt.
Zum Code:
Momentan hänge ich an der invoke-Methode, da ich nicht weiß, welches Objekt ich übergeben soll. Habe relativ wenig Erfahrung mit Reflections....
Hoffe ihr könnt mir helfen und versteht mein Problem!
ich habe ein Methode, die (mit einem Klassennamen als Parameter) aufgerufen wird und mit Hilfe des Klassennamen auf ein entsprechendes DAO zugreift, dort eine FindAll-Methode aufruft und die erhaltene Liste dann schließlich zurückgibt.
Zum Code:
Java:
public List<Category> getAll(String classname) {
List<Category> list = new ArrayList<Category>();
Method getAll = null;
Class<?> dao = getDaoByClassname(classname);
try {
getAll = dao.getMethod("findAll");
list = (List<Category>) getAll.invoke(dao);
// Was wird bei der Methode invoke als Parameter angegeben?
//Also in meinem konkreten Fall? dao mag er nicht
} catch (SecurityException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (NoSuchMethodException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IllegalArgumentException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IllegalAccessException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (InvocationTargetException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return list;
}
private Class<?> getDaoByClassname(String classname) {
Class<? extends CategoryService> service = this.getClass();
Class<?> dao = null;
String daoName = "";
Field daoField = null;
daoName = firstLetterToLowerCase(classname + "DAO");
// Konvention für die DAO-Felder in der Service-Klasse
try {
daoField = service.getDeclaredField(daoName);
dao = daoField.getType();
} catch (SecurityException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (NoSuchFieldException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return dao;
}
Momentan hänge ich an der invoke-Methode, da ich nicht weiß, welches Objekt ich übergeben soll. Habe relativ wenig Erfahrung mit Reflections....
Hoffe ihr könnt mir helfen und versteht mein Problem!
Zuletzt bearbeitet von einem Moderator: