PHP имеет функцию var_dump (), которая выводит внутреннее содержимое объекта, отображая тип и содержимое объекта.
Например:
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);
выведет:
object(Person)#1 (2) { ["firstName:private"]=> string(3) "Jon" ["lastName:private"]=> string(5) "Smith" }
Что эквивалентно в Java, что будет делать то же самое?
Это не совсем так испечено на Java, поэтому вы не получите это бесплатно. Это делается с помощью конвенций, а не языковых конструкций. Во всех классах передачи данных (и, возможно, даже во всех классах, которые вы пишете … ), вы должны реализовать разумный метод toString
. Поэтому здесь вам нужно переопределить toString()
в вашем классе Person
и вернуть желаемое состояние.
Существуют утилиты, которые помогают при написании хорошего метода toString, или большинство IDE имеют автоматическую toString()
ярлыков toString()
.
EDIT: ссылки мертвы – теперь доступно here
.
По моему опыту, var_dump обычно используется для отладки PHP вместо отладочного шага. В Java вы можете, конечно, использовать отладчик IDE для визуального представления содержимого объекта.
Ваши альтернативы – переопределить метод toString()
вашего объекта для вывода его содержимого таким образом, который вам нравится, или использовать отражение для проверки объекта (аналогично тому, что делают отладчики).
Преимущество использования рефлексии заключается в том, что вам не нужно будет изменять отдельные объекты для «анализируемого», но есть дополнительная сложность, и если вам нужна поддержка вложенных объектов, вам придется написать это.
Этот код будет отображать поля и их значения для Object
«o»,
Field[] fields = o.getClass().getDeclaredFields(); for (int i=0; i<fields.length; i++) { System.out.println(fields[i].getName() + " - " + fields[i].get(o)); }
Я думаю, что лучший способ сделать это, использует google-gson (библиотека Java для преобразования объектов JSON в Java и наоборот)
Загрузите его, добавьте файл «jar» в свой проект
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));
Вывод:
{"key_3":"Ali Mamedov","key_2":"Azerbaijan","key_1":"Baku"}
Вы можете конвертировать любой объект (массивы, списки и т. Д.) В JSON. Я думаю, что это лучший аналог PHP var_dump ()
Пакет apache commons lang предоставляет такой класс, который может использоваться для создания метода toString () по умолчанию с использованием отражения для получения значений полей. Просто взгляните на это .
Я использую Jestr с разумными результатами.
Я нашел этот метод для создания объекта dump, попробуйте этот дамп String (объект Object)
Мне нравится использовать GSON, потому что это часто уже зависимость от типа проектов, над которыми я работаю:
public static String getDump(Object o) { return new GsonBuilder().setPrettyPrinting().create().toJson(o); }
Или замените GSON на любую другую библиотеку JSON, которую вы используете.
Вы сериализуете XML, и вы должны получить очень аккуратное представление даже глубоко вложенных объектов.