J'essaie de résoudre le problème suivant en réflexion. J'ai un POJO qui agit comme une méta-donnée pour la signature de la méthode dans la classe TestResponse. TestResponse a un setDate() methid qui prend un paramètre Date. J'essaye de faire ceci est un code générique qui peut accepter n'importe quelle méthode et sa signature pour placer dans la réponse. Ce que je n'arrive pas à comprendre, c'est comment définir le paramètre Classe en appelant getMethod() en fonction de l'entrée. L'entrée me dit de définir le paramètre comme Date, mais je ne sais pas comment y parvenir.java réflexion question
Voici mon exemple de code. Bien sûr, le mdi.modifier.getClass() est faux car il aura String.class au lieu de Date.class.
TestResponse response = new TestResponse();
Object val = "test";
MDIBase mdi = new MDIBase("setDate", "Date");
Method m = response.getClass().getMethod(mdi.method, mdi.modifier.getClass());
m.invoke(response, new Object[] { val });
Voilà MDIBase
public class MDIBase {
public String method;
public String modifier;
public MDIBase(String method, String modifier){
this.method = method;
this.modifier = modifier;
}
Les pointeurs seront très appréciés.
Merci
Exactement ce que j'écrivais! Mais aussi, pourquoi utiliser une chaîne pour mdi.modifier? Pourquoi ne pas en faire un objet de classe? Alors votre ligne 'MDIBase mdi = nouvelle MDIBase (" setDate "," Date ");' serait 'MDIBase mdi = nouvelle MDIBase (" setDate ", java.util.Date.class);' –
@Stephen, cela pourrait totalement travail. J'essayais juste d'être aussi proche de ce que le code original de @ Shamik était :-). Je pense que la chaîne pourrait permettre plus de flexibilité dans l'instance où vous vouliez que l'utilisateur puisse spécifier le nom de la classe (comme à partir de la ligne de commande ou de xml, etc.) ... mais cela fonctionnerait tout de même ... –
Parfait, c'est exactement ce que je cherchais .. merci Chris, appréciez votre aide. – Shamik