2017-01-13 6 views
0

Я часто нахожусь в ситуации, когда я хочу сделать что-то вроде JavaScript, где я могу сказать:написать весь объект войти в Java

console.log(object) 

, и это будет просто напечатать весь объект, а все имена функций в объект. В php я использовал эту приятную функцию:

function print_object($object) { 
    echo '<pre class="notifytiny">' . htmlspecialchars(print_r($object,  true)) . '</pre>'; 
} 

Это единственная самая полезная функция, которую я когда-либо использовал в php.

Я знаю, что вы можете отлаживать java и проходить через код, а затем в конечном итоге смотреть на объект в средстве просмотра объектов, но это хлопот. Я хочу просто напечатать объект, также я использую Кордову, которая не позволяет легко отлаживать.

Есть ли способ сделать это в Java без переопределения метода toString?

+0

Это о 'Java' или' Javascript'? Если это Java, вы можете посмотреть «Logger» для получения дополнительной информации. – user2004685

+0

Извините за недоразумение Java, Javascript очень просто –

+1

Вы можете использовать отладчик для проверки объекта. В Java вызывается метод 'toString()' для создания строки, представляющей объект. Вы можете определить его в своем классе, чтобы делать то, что вы хотите. Это необходимо сделать для каждого класса. В качестве альтернативы, и он добавит много кода и, возможно, не сработает, это использование некоторой библиотеки сериализации, которая использует отражение для поиска полей. Например, Джексон может сделать это для создания JSON, но только если ваш графический объект не имеет опорных циклов и/или аннотирован соответствующим образом. – dsh

ответ

2

Вы можете просто напечатать объект в stdout с помощью System.out.println (object). Вы можете настроить информацию, которая печатается, переопределяя метод toString() класса, к которому принадлежит объект, если класс определен вашим кодом.

Вы также можете попробовать использовать Log4J, широко используемую библиотеку для настройки ведения журнала.

+0

, я мог бы это сделать, но тогда я должен настроить его, если я хочу напечатать намерение, должен ли я переопределить каждый новый класс, который я хочу зарегистрировать? –

+0

может Log4J регистрировать класс? –

+1

Переключение на String - общий подход, но вы должны сделать это для каждого класса. Вместо этого вы можете написать вспомогательный метод для регистрации всех полей с использованием отражения. Может быть, уже есть библиотека, которая это делает. –