Java Wie drucke ich alle lokalen Variablen?

8

Ich habe eine Methode und möchte Variablen darin untersuchen, ohne zu debuggen - ist das in Java möglich?

Ich möchte nicht so viel Code schreiben wie:

%Vor%

Ich möchte etwas wie:

%Vor%

Es sollte auch toll sein, etwas wie:

zu haben %Vor%     
denys 18.03.2011, 16:40
quelle

6 Antworten

3

Nun, Sie können eine Methode mit einem Varargs-Parameter schreiben und einfach schreiben:

%Vor%

Es ist nicht ideal, aber es wird unter Umständen ausreichen. Es gibt keine Möglichkeit, alle lokalen Variablen automatisch von einer Methode zu übernehmen und sie trotzdem zu löschen.

Sie könnten eine Art Bytecode-Manipulation in Betracht ziehen (zB mit BCEL ), das könnte es tun ... aber es wäre so ziemlich hässlich.

    
Jon Skeet 18.03.2011 16:45
quelle
3
  

Ich möchte etwas wie: System.out.printLocals();

haben      

Es sollte auch großartig sein, etwas wie: System.out.printMembersOf(someObjectInstance);

zu haben

Fast jede Java-Klasse hat eine toString -Methode. Sie überschreiben diese Methode, und Sie können eine Zeichenfolge abrufen, die das darstellt, nach dem Sie fragen.

Eclipse Helios wird neben anderen IDEs eine grundlegende toString -Methode für Sie generieren.

    
Gilbert Le Blanc 18.03.2011 17:48
quelle
2

ODER

  • Ausdruck an der Konsole: ( System.out.println("var") )

ODER

gideon 18.03.2011 16:45
quelle
1

Sie können System.out.println zum Ausdrucken von Variablen verwenden. Beispiel:

%Vor%     
dogbane 18.03.2011 16:44
quelle
0

Was meinst du mit "untersuchen"? Versuchen Sie eine System.out.println (yourvariable) oder (yourvariable.toString ()), wenn es ein Objekt ist. Es wird es in der Konsole anzeigen.

    
Raveline 18.03.2011 16:43
quelle
0

Es ist nicht einfach, die Werte lokaler Variablen zur Laufzeit zu lesen, selbst wenn Sie ein Debugger sind. Wenn in Ihrer Klasse keine Debugsymbole vorhanden sind, können lokale Variablen auch dann nicht angezeigt werden, wenn Sie einen Debugger verwenden.

Die einfachste Lösung, um die Werte zu sehen, ist das Drucken mit System.out.println() oder die Verwendung der Protokollierung ( slf4j ).

>

Wenn Sie lokale Variablen zur Laufzeit ohne Änderung des Codes verwenden möchten, können Sie AOP (Aspect- orientierte Programmierung). Oder Sie können dieselbe API verwenden, die ein Debugger verwendet , um die laufende VM zu untersuchen.

    
Aaron Digulla 18.03.2011 16:49
quelle

Tags und Links