PHP ma funkcję var_dump (), która wyświetla wewnętrzną zawartość obiektu, pokazując typ i zawartość obiektu.
Na przykład:
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);
wyświetli:
object(Person)#1 (2) {
["firstName:private"]=>
string(3) "Jon"
["lastName:private"]=>
string(5) "Smith"
}
Jaki jest odpowiednik w Javie, który zrobi to samo?
Odpowiedzi:
Nie jest tak dopracowany w Javie, więc nie dostajesz tego za darmo. Odbywa się to za pomocą konwencji, a nie konstrukcji językowych. We wszystkich klasach transferu danych (a może nawet we wszystkich klasach, które piszesz ... ) powinieneś zaimplementować rozsądny
toString
metodę. Więc tutaj musisz nadpisaćtoString()
w swojejPerson
klasie i przywrócić pożądany stan.Dostępne są narzędzia, które pomagają w napisaniu dobrej metody toString lub większość IDE ma automatyczny
toString()
skrót do pisania.źródło
Z mojego doświadczenia wynika, że var_dump jest zwykle używany do debugowania PHP zamiast debugera krokowego. W Javie możesz oczywiście użyć debuggera IDE, aby zobaczyć wizualną reprezentację zawartości obiektu.
źródło
Twoje alternatywy to zastąpienie
toString()
metody obiektu w celu wyprowadzenia jego zawartości w sposób, który ci się podoba, lub użycie odbicia w celu sprawdzenia obiektu (w sposób podobny do tego, co robią debuggery).Zaletą używania odbicia jest to, że nie będziesz musiał modyfikować swoich pojedynczych obiektów, aby były „analizowalne”, ale jest to dodatkowa złożoność i jeśli potrzebujesz obsługi obiektów zagnieżdżonych, będziesz musiał to napisać.
Ten kod wyświetli listę pól i ich wartości dla
Object
„o”źródło
Myślę, że najlepszym sposobem na to jest użycie google-gson (biblioteka Java do konwersji JSON na obiekty Java i odwrotnie)
Pobierz go, dodaj plik „jar” do swojego projektu
Wynik:
Możesz przekonwertować dowolny obiekt (tablice, listy itp.) Na JSON. Myślę, że to najlepszy odpowiednik var_dump () w PHP
źródło
Pakiet apache commons lang udostępnia taką klasę, której można użyć do zbudowania domyślnej metody toString () przy użyciu funkcji refleksji w celu uzyskania wartości pól. Wystarczy spojrzeć na to .
źródło
Używam Jestra z rozsądnymi wynikami.
źródło
Lubię używać GSON, ponieważ często jest to już zależność od typu projektów, nad którymi pracuję:
Lub zamień GSON na inną używaną bibliotekę JSON.
źródło
Znalazłem tę metodę zrzutu obiektu, spróbuj tego zrzutu String (obiekt Object)
źródło
Serializacja XML-a i powinieneś uzyskać bardzo zgrabną reprezentację nawet głęboko zagnieżdżonych obiektów.
źródło
Myślę, że coś podobnego możesz zrobić, to stworzyć prostą metodę, która drukuje obiekt, który chcesz zobaczyć. Coś takiego:
To nie to samo, co var_dump (), ale możesz uzyskać ogólne pojęcie o tym, bez konieczności przechodzenia do debugera IDE.
źródło
Wystarczy dodać rozwiązanie Field (setAccessible), aby uzyskać dostęp do prywatnej zmiennej obiektu:
źródło