Was ist das Java-Äquivalent von PHP var_dump?

Lesezeit: 4 Minuten

PHP hat eine var_dump() Funktion, die den internen Inhalt eines Objekts ausgibt und den Typ und Inhalt eines Objekts anzeigt.

Zum Beispiel:

class Person {
  private $firstName;
  private $lastName;

  public function __construct($firstName, $lastName) {
    $this->firstName = $firstName;
    $this->lastName = $lastName;
  }
}

$person = new Person('Jon', 'Smith');
var_dump($person);

wird ausgeben:

object(Person)#1 (2) {
  ["firstName:private"]=>
  string(3) "Jon"
  ["lastName:private"]=>
  string(5) "Smith"
}

Was ist das Äquivalent in Java, das dasselbe tut?

  • hast du mal db4o probiert? es ist nicht speziell dafür, aber ich denke, es wird perfekt funktionieren;

    – Wassermannkraft

    23. Februar 2015 um 18:49 Uhr

Benutzer-Avatar
serg10

Es ist in Java nicht ganz so eingebrannt, also bekommst du es nicht umsonst. Dies geschieht eher mit Konventionen als mit Sprachkonstrukten. In allen Datenübertragungsklassen (und vielleicht sogar in allen klassen schreibst du…), sollten Sie eine sinnvolle implementieren toString Methode. Hier müssen Sie also überschreiben toString() in deiner Person Klasse und geben den gewünschten Zustand zurück.

Es gibt Dienstprogramme verfügbar die beim Schreiben einer guten toString-Methode helfen, oder die meisten IDEs haben eine automatische toString() Abkürzung schreiben.

Meiner Erfahrung nach wird var_dump normalerweise zum Debuggen von PHP anstelle eines Step-Through-Debuggers verwendet. In Java können Sie natürlich den Debugger Ihrer IDE verwenden, um eine visuelle Darstellung des Inhalts eines Objekts anzuzeigen.

  • Ja, die meisten PHP- oder Webentwickler vergessen das Debuggen. Weil sie es vorziehen, das Debug-Ergebnis im Browser zu sehen.

    – GusDeCool

    4. August 2013 um 18:54 Uhr

  • Sie können den Debugger Ihrer IDE nicht verwenden, wenn Sie beispielsweise Ihren JSP-Code im browserbasierten Editor von Adobe Experience Manager programmieren. 🙁

    – Trevor

    24. September 2014 um 22:16 Uhr

  • Vielleicht können wir es verwenden, um das Verhalten Ihres Programms in einer Live-Umgebung zu testen, indem wir den Vardump im HTML-Format drucken.

    – omjego

    18. Dezember 2018 um 2:07 Uhr

Benutzer-Avatar
Harry Kalk

Ihre Alternativen bestehen darin, die zu überschreiben toString() -Methode Ihres Objekts verwenden, um seinen Inhalt auf eine von Ihnen gewünschte Weise auszugeben, oder um das Objekt mithilfe von Reflektion zu untersuchen (ähnlich wie bei Debuggern).

Der Vorteil der Verwendung von Reflektion besteht darin, dass Sie Ihre einzelnen Objekte nicht so ändern müssen, dass sie “analysierbar” sind, aber es gibt zusätzliche Komplexität, und wenn Sie Unterstützung für verschachtelte Objekte benötigen, müssen Sie dies schreiben.

Dieser Code listet die Felder und ihre Werte für an auf Object “Ö”

Field[] fields = o.getClass().getDeclaredFields();
for (int i=0; i<fields.length; i++)
{
    System.out.println(fields[i].getName() + " - " + fields[i].get(o));
}

  • Was ist das für ein Feld, das Sie verwenden, importiert von wo?

    – RAS Miranda

    11. Dezember 2013 um 21:53 Uhr

  • java.lang.reflect.Field

    – Harry Kalk

    19. Dezember 2013 um 11:53 Uhr

Ich denke, der beste Weg, dies zu tun, ist die Verwendung von google-gson (Eine Java-Bibliothek zum Konvertieren von JSON in Java-Objekte und umgekehrt).

Download Fügen Sie Ihrem Projekt eine “jar” -Datei hinzu

HashMap<String, String> map = new HashMap<String, String>();

map.put("key_1", "Baku");
map.put("key_2", "Azerbaijan");
map.put("key_3", "Ali Mamedov");

Gson gson = new Gson();

System.out.println(gson.toJson(map));

Ausgabe:

{"key_3":"Ali Mamedov","key_2":"Azerbaijan","key_1":"Baku"}

Sie können jedes Objekt (Arrays, Listen usw.) in JSON konvertieren. Ich denke, dass es das beste Analogon von PHP ist var_dump()

Benutzer-Avatar
wirklich verrückt

Das Apache Commons lang-Paket stellt eine solche Klasse bereit, die verwendet werden kann, um eine standardmäßige toString()-Methode aufzubauen, die Reflektion verwendet, um die Werte von Feldern zu erhalten. Einfach mal anschauen Dies.

Benutzer-Avatar
mattalxndr

Ich verwende gerne GSON, weil es oft schon eine Abhängigkeit von der Art der Projekte ist, an denen ich arbeite:

public static String getDump(Object o) {
    return new GsonBuilder().setPrettyPrinting().create().toJson(o);
}

Oder ersetzen Sie GSON durch eine andere JSON-Bibliothek, die Sie verwenden.

Benutzer-Avatar
brmüller

ich benutze Jestr mit vernünftigen Ergebnissen.

1334530cookie-checkWas ist das Java-Äquivalent von PHP var_dump?

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy