18 Stimmen

Äquivalent zu PHP's print_r in Java?

Als ich das letzte Mal fragte, wie man eine Datenstruktur auffüllt ici . Jetzt würde ich gerne wissen, ob es in Java etwas gibt, wie die drucken_r Ich verwende PHP, um darzustellen, was ich in die Karten und Listen eingefügt habe, ohne meinen eigenen Algorithmus anwenden zu müssen.

Irgendwelche Ideen?

2voto

stivlo Punkte 80006

Meine Meinung zu Java print_r wie Funktionalität, ist die Klasse RecursiveDump die ich geschrieben habe. Es ist nicht perfekt, aber für mich funktioniert es gut. Die Verwendung ist:

String output = RecursiveDump.dump(...);

Es könnte mit Hilfe von Generika verbessert werden, ich habe es vor vielen Jahren geschrieben, bevor ich sie kannte. Auch wenn es versucht, mit einigen Collection-Typen umzugehen, wird es bei Objekten einfach die toString() Methode.

Ich dachte, Reflection zu verwenden, um Feldnamen für Klassen zu extrahieren, ohne eine richtige toString() aber da Federvieh @RooToString kann die toString() Methode für Sie...

Die Alternative ist natürlich die Verwendung des Inspektionswerkzeugs eines Debuggers, aber manchmal ist es schneller, Ausdrucke zu verwenden.

0voto

Daniel Hiller Punkte 3305

Ich kenne keine Entsprechung von print_r in Java.

Aber...

Jedes Objekt hat eine Standardimplementierung der Methode toString(), die Implementierungen von list und map geben ihren Inhalt aus, wenn Sie toString() für sie aufrufen.

Wenn Sie Debug-Informationen ausgeben möchten, ist toString() die richtige Funktion für Sie.

0voto

DeeCee Punkte 400

Es gibt keine Entsprechung für print_r in Java.

Aber für Karten oder Listen können Sie die foreach-Schleife wie folgt verwenden:

List <String> list = …; // fills your list 

// print each list element 

for (String s : list) {

   System.out.println(s);

 }

0voto

Hans-Peter Störr Punkte 24030

Für Arrays ist der einfachste Weg Arrays.asList(array).toString() . Im Allgemeinen implementiere ich toString() für Objekte, die ich in Debug-Ausgaben haben möchte. Für generierte Objekte (JAXB etc.) muss man aber vielleicht eine Utility-Klasse erstellen, um sie zu drucken.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X