toString()
. Sus características son:- Todos los objetos disponen de uno.
- Es un miembro de la clase
Object
(el tipo más básico del que heredan todas las clases, lo veremos en la sesión de herencia) - Si no tienen definido uno propio, se utilizará el método
toString()
heredado del pariente más cercano, hasta llegar como máximo el métodotoString()
de la claseObject
(el pariente más lejano) - Siempre devuelve una
String
y no toma parámetros. - Es utilizado en general para tener una representación en texto de un objeto (es lo que utiliza nuestro amigo System.out.print, pero también lo utilizarán por ejemplo elementos de interfaz de usuario para mostrarlo en una tabla o un cuadro combinado por ejemplo). Esto al final será una representación que tendrá significado fácil de entender para una persona.
Por ello y porque ahora mismo nuestra forma de conocer "qué está pasando" es imprimir por consola, vamos a utilizar el método
toString()
desde este momento para facilitarnos las comprobaciones del resto de sesiones.
El método
toString()
se usará para tener un texto fácil de leer y representativo de un objeto
Para los ejemplos vamos a usar la clase
Coche
con el siguiente código: public class Coche {
String modelo;
String color;
int numeroDeRuedas;
}
En este fragmento de código no tenemos mas miembros que las variables de instancia sin inicializar.Si imprimimos un nuevo objeto del tipo
Coche
con System.out.println(new Coche());
tenemos la siguiente salida:
Coche@52e922
Aunque no hemos llamado directamente al método
toString()
, Java usará la sobrecarga del método println(Object x)
para tratarlo como un Object
y llamarlo por nosotros.
Como vemos esto no es para nada un significado fácil de entender para una persona, con lo que se recomienda cambiar el método
toString()
para cada clase que hagamos. Por ahora vamos a usar Eclipse para ayudarnos a crear nuestro método
toString()
. Pinchamos botón derecho en la línea donde queramos que nos añada el método (yo normalmente estos métodos tan básicos que sobrescribo los pongo al final de todo) y elegimos Source > Generate toString().... Nos sale un asistente donde podemos elegir qué queremos incluir. Por ahora lo dejamos como está con todos los campos marcados y pinchamos en Generate. Nos incluye el siguiente código: @Override
public String toString() {
return "Coche [modelo=" + modelo + ", color=" + color + ", numeroDeRuedas=" + numeroDeRuedas + "]";
}
Vemos que es bastante genérico. El formato es poner el nombre de la clase y entre corchetes ir concatenando los atributos que hemos seleccionado en la pantalla del asistente junto con su valor.Ahora si hacemos una impresión por consola con
System.out.println(new Coche());
me produce la siguiente salida:
Coche [modelo=null, color=null, numeroDeRuedas=0]
Este resultado por muy simple que sea ya tiene un significado fácil de leer. Lo ideal sería ponerlo en un formato más práctico para nosotros y no tan esquemático. Os propongo que cambiéis el método para ponerlo en un formato más bonito para vosotros (es sólo crear un String). Cuando lo tengáis podéis ver mi solución propuesta:
@Override
public String toString() {
return modelo + " (" + color + "), " + numeroDeRuedas + " ruedas";
}
Coche
con constructores personalizados.
No hay comentarios:
Publicar un comentario