2012-02-07 17 views
5

Para comprender aspectos internos de algún código o imprimir volcados sobre errores, uso pp -como funciones en Python y Emacs lisp.Busque una biblioteca o técnica estándar para obtener una representación bastante impresa de OBJECT para Java

Ahora vengo a Java y busco una biblioteca o técnica estándar para obtener una representación bastante impresa de OBJECT para Java.

Parece que la especificación actual de Java permite la introspección del objeto Java en tiempo de ejecución. Pero la introspección puede no ser tan poderosa. m (Objeto o) no se puede llamar con nuevo Objeto [] arg?

NOTA Soy ¡NO buscando el embellecedor del código fuente! Estoy buscando en tiempo de ejecución impresión bonita objeto dumping de Java.

NOTA 2 Estas preguntas similares pero no exactamente el mismo:

+1

Este es un enfoque típico para lenguajes como lisp y python. Uno lo ve menos por un lenguaje compilado como java. Allí está estableciendo un punto de interrupción e inspeccionando las variables en el depurador. Eso no es tan inteligente, pero podría considerar alterar su forma de trabajar. Implementar bonitos 'toString's también ayuda. –

+0

@JoopEggen ¡Gracias por los consejos sobre debuger! ¿Debo usar algún desempañador GUI o jdb puede imprimir muy bien el contenido de la clase (matriz de entero)? Yo uso Emacs así que es fácil almacenar y procesar la salida de jdb para mí ... – gavenkoa

+0

Para imprimir la clase contender bajo ** jdb ** use depurador ** dump ** ¡comando! – gavenkoa

Respuesta

11

Puede usar el ReflectionToStringBuilder de la biblioteca Apache Commons Lang.

muestra:

String dump = ReflectionToStringBuilder.toString(object); 

cuanto a su pregunta:

m (Object o) no puede ser llamado con el nuevo Object [] arg?

Sure it can, arrays of Object es un subtipo de Object.

7

para una solución rápida y sucia para mostrar la salida de un objeto Java , puedes usar Jackson http://jackson.codehaus.org/ esto dará como resultado el objeto en JSON.

+1

Para cualquier persona que necesite más detalles, puede hacerlo usando [ObjectMapper] (https://fasterxml.github.io/jackson-databind/javadoc/2.5/com/fasterxml/jackson/databind/ObjectMapper.html): '(new com .fasterxml.jackson.databind.ObjectMapper()). writerWithDefaultPrettyPrinter(). writeValueAsString (object); ' –

Cuestiones relacionadas