J'ai une méthode et je souhaite examiner les variables qu'elle contient sans déboguer - est-ce possible en Java?
Je ne veux pas écrire des tonnes de code comme:
System.out.println("a: " + a);
Je veux quelque chose comme:
System.out.printLocals();
En outre, cela devrait être génial d'avoir quelque chose comme:
System.out.printMembersOf(someObjectInstance);
Je veux avoir quelque chose comme:
System.out.printLocals();
En outre, il devrait être intéressant d’avoir quelque chose comme:
System.out.printMembersOf(someObjectInstance);
Presque toutes les classes Java ont une méthode toString
. Vous substituez cette méthode et vous pouvez obtenir une chaîne qui représente ce que vous demandez.
Eclipse Helios, parmi d'autres IDE, générera une méthode toString
de base pour vous.
Eh bien, vous pouvez écrire une méthode avec un paramètre varargs et simplement écrire:
dump(variable1, variable2, variable3, variable4, ...);
Ce n'est pas idéal, mais cela suffira dans certaines circonstances. Il n’existe aucun moyen de récupérer automatiquement toutes les variables locales d’une méthode et de les vider.
Vous pourriez envisager une sorte de manipulation de bytecode (par exemple avec BCEL ) qui pourrait le faire ... mais ce serait plutôt moche.
OR
System.out.println("var")
)OR
Vous pouvez utiliser System.out.println
pour imprimer des variables. Exemple:
int i = 42;
System.out.println("i:" + i);
Qu'entendez-vous par "examiner"? Essayez un System.out.println (votre variable), ou (votre variable.toString ()) s'il s'agit d'un objet. Il va l'afficher dans la console.
Ce n'est pas simple de lire les valeurs des variables locales au moment de l'exécution, même si vous êtes un débogueur. S'il n'y a pas de symboles de débogage dans votre classe, il n'existe aucun moyen de voir les variables locales, même si vous utilisez un débogueur.
La solution la plus simple pour afficher les valeurs consiste à les imprimer avec System.out.println()
ou à utiliser la journalisation ( slf4j ).
Si vous voulez donner un exemple aux variables locales au moment de l'exécution sans changer le code, vous pouvez essayer AOP (Programmation orientée aspect). Ou vous pouvez utiliser la même API qu'un débogueur utilise pour examiner la machine virtuelle en cours d'exécution.