Java drucken alle lokalen Variablen?
Ich habe eine Methode, und wollen untersuchen, Variablen innerhalb es ohne debugging - ist es möglich in Java?
Möchte ich nicht schreiben, Tonnen von code wie:
System.out.println("a: " + a);
Möchte ich etwas wie:
System.out.printLocals();
Es sollte auch groß sein, um so etwas wie:
System.out.printMembersOf(someObjectInstance);
- Welche IDE benutzt du?
- Alle Mitglieder wurden gebeten, unter: stackoverflow.com/questions/1526826/..., lassen Sie diese nur für die einheimischen.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Gut, Sie können schreiben Sie eine Methode mit varargs-parameter und nur schreiben:
Es ist nicht ideal, aber es wird genug sein in einigen Fällen. Es gibt keine Möglichkeit, automatisch greifen alle lokalen Variablen einer Methode und dump, die Ihnen aber.
Könnten Sie in Erwägung ziehen eine Art bytecode-manipulation (z.B. mit BCEL), die es tun könnte... aber es wäre ziemlich hässlich.
Gerade über jede Java-Klasse hat eine
toString
Methode. Überschreiben Sie diese Methode, und Sie können eine Zeichenfolge, die das repräsentiert, was Sie für Fragen.Eclipse Helios unter anderem IDEs, generiert einen basic -
toString
Methode für Sie.public void foo(int k, String s) { System.out.printLocals(); }
// erwartete Ausgabe ist die gleiche wie fürSystem.out.ptintln("k: " + Integer.toString(k)); System.out.ptintln("s: " + s);
ODER
System.out.println("var")
)ODER
jdb
es istlocals
.Können Sie
System.out.println
ausdrucken Variablen. Beispiel:Was meinst du mit "Prüfung" ? Versuchen Sie, ein System.aus.println(yourvariable), oder (yourvariable.toString ()), wenn es ein Objekt. Es werden anzeigen auf der Konsole.
Es ist nicht einfach zu Lesen sind die Werte von lokalen Variablen zur Laufzeit, selbst wenn Sie einen debugger. Wenn es keine debug-Symbole in Ihre Klasse, es gibt keine Möglichkeit überhaupt zu sehen, lokale Variablen, auch wenn Sie einen debugger verwenden.
Die einfache Lösung zu sehen, die Werte drucken Sie mit
System.out.println()
oder verwenden Sie logging (slf4j).Wenn Sie möchten, um z.B. lokale Variablen während der Laufzeit ohne änderung des Codes, können Sie versuchen, AOP (Aspekt-orientierte Programmierung). Oder Sie können verwenden die gleichen API, die ein debugger verwendet zu untersuchen, die laufende VM.