2012-05-03 10 views
20

Estoy intentando depurar un programa que heredé. Este programa contiene cadenas, listas y colecciones de matriz, un montón de conversión entre tipos de, y necesito hacer algunas manipulaciones de Cuerda (substring, etc.)¿Hay alguna manera de enviar el tipo de datos java a la consola?

Los datos mirada como cuerdas cuando se imprime en la consola (por ejemplo, es una línea de texto, como Johnson, John o Chicago Region), pero mi código se está extrayendo con varios errores index out of range, lo que sugiere que mi código para transmitir a String no funciona.

Me gustaría tratar de averiguar qué tipos de datos están entrando y dejar mis métodos para verificar que el programa está actuando como se esperaba. ¿Hay alguna forma de encontrar un tipo de campo en Java? En un mundo perfecto, podría generar resultados de consola en cada paso que me daría el valor de los datos y si se trata de una cadena, una lista de arreglos o una colección. ¿Se puede hacer eso?

+1

Por cierto, si no obtiene una 'ClassCastException', entonces el molde a' String' * está * funcionando. –

Respuesta

37

Dada una instancia de cualquier objeto, se le puede llamar es el método getClass() para obtener una instancia de la clase de objeto que describen el tipo de objeto.

Utilizando el objeto del grupo, puede imprimir fácilmente que es el nombre del tipo:

Integer number=Integer.valueOf(15); 
System.out.println(number.getClass().getName()); 

Esta impresión a la consola el nombre completo de la clase, que por ejemplo es:

java.lang.Integer 

Si desea una salida más concisa, se puede utilizar en su lugar:

Integer number=Integer.valueOf(15); 
System.out.println(number.getClass().getSimpleName()); 

getSimpleName() coloca solo el nombre de la clase:

Integer 

Impresión del tipo de variables primitivas es un poco más complejo: ver this SO question para más detalles.

5

Para cualquier objeto x, puede imprimir x.getClass().

+1

Lo haría x.getClass.getName() –

+0

¿Qué pasa con las instancias 'null'? –

+0

@PaulVargas 'if (object == null) {sout (" null ")}' – Mob

0

Eso sí, .class.getName(); en cualquier objeto

0

instance.getClass() es el camino a seguir si sólo desea imprimir el tipo. También puede usar instanceof si desea dividir el comportamiento según el tipo, p.

if (x instanceof String) 
{ 
    // handle string 
} 
0

utilizar el método de getClass().

Object o; 
System.out.println(o.getClass()); 
Cuestiones relacionadas