Cela fait un de ces jours que quelqu'un peut m'aider avec cela.Java Reflection est égal à Question
J'ai 2 objets Stock dont je veux comparer les propriétés à l'exécution. Une instance est l'instance mise en cache, l'autre est une nouvelle instance stock qui vient d'être livrée à mon système, qui peut ou non être égale à l'instance mise en cache. Voir ci-dessous où m est une méthode de la Bourse de classe et le stock est une instance de Stock
try {
// I want to compare these two objects, return type of m may vary
Object result = m.invoke(stock);
Object cacheResult = m.invoke(stockCache.get(ticker));
// The return type of m may vary but is known at runtime
Class returnType = m.getReturnType();
// I assume I need to cast before .equals() will work correctly
if(result.equals(cacheResult)) {
// Will this work or do I need to cast
}
}catch (Exception ex) {
}
EDIT: Pour ceux qui ont demandé pourquoi je me sers de réflexion, je suis en utilisant le cadre ajax inverse DWR et je suis essayer de mapper une propriété html id à mes propriétés d'objet, ce qui me permet d'annoter mes propriétés avec leur valeur d'identifiant HTML associée. En poussant l'objet sur l'interface utilisateur, cette méthode me permet de ne pousser que les propriétés qui ont changé et non l'objet entier.
Pourriez-vous nous donner plus d'informations sur les types de rendement attendu de m? S'agit-il de valeurs scalaires telles que les chaînes ou les entiers, ou s'agit-il d'objets plus compliqués? Sont-ils des objets avec une superclasse commune? –
Vous n'avez pas besoin de diffuser. Et vous n'avez pas non plus besoin du try/catch (Exception). Vous avez juste besoin de vous assurer que votre méthode égale fonctionne comme supposé. – OscarRyz