Tostring de objetos en Java

Tostring de objetos en Java
En Java, un objeto es la instancia de una clase, o es una matriz. Hay una clase llamada objeto. Este objeto no debe confundirse con un objeto, que es la instancia de una clase. "Objeto", comenzando con el mayúscula 'O', es el nombre de una clase, una clase especial. En Java, el antepasado superior de todas las clases es esta clase, objeto. El objeto se puede instanciar en una clase, objeto (opcionalmente nombrado, con minúsculas, 'o'). Sin embargo, no es necesario instanciar la clase especial, objeto. Todas las clases, que son clases predefinidas o definidas por programador, se heredan de esta clase, objeto.

La clase de objeto tiene un método llamado, toString (). Este método devuelve una representación de cadena del objeto de una clase normal. Todas las clases heredan este método desde el objeto de clase. Cada matriz (como objeto) tiene un método similar.

Desafortunadamente, esta representación de cadena del objeto es un código de texto corto (texto literal de cadena corta). No es muy útil, aunque se puede decodificar. Tal decodificación no se aborda en este artículo. Y así, el programador debe anular este método para tener una representación del objeto; El usuario de la computadora apreciará que. La prima se aborda en este artículo.

Comportamiento predeterminado del método toString ()

Tipos primitivos

Los tipos primitivos como el int existen por derecho propio. Sin embargo, cada tipo primitivo en Java tiene una clase correspondiente (envoltorio). Cuando se trata de convertir objetos primitivos en cadenas, son las clases correspondientes las que deben usarse. El siguiente programa ilustra esto para el int. La clase correspondiente para int es la clase entera.

clase pública THECLASS
public static void main (string [] args)
Entero en = 5;
Cadena str = en.Encadenar();
Sistema.afuera.println (str);

La salida es 5. Si se escribiera "entero" como int, entonces se habría emitido un mensaje de error en el momento de la compilación. El método toString () de la clase de ancestros más grande se ha empleado aquí, sin ningún problema. Es decir, el entero, 5 se ha convertido en una cadena e imprimido sin ningún problema. Sin embargo, si la clase fuera una clase definida por programador u otro tipo de clase predefinida, entonces habría habido algún problema.

Clase definida del programador

Considere el siguiente programa que imprime la representación del objeto definido del programador, OBJ:

Clase Aclass
int prop1 = 1;
int prop2 = 2;
void mthd ()
Sistema.afuera.println ("visto");


clase pública THECLASS
public static void main (string [] args)
Aclass obj = new Aclass ();
Cadena str = obj.Encadenar();
Sistema.afuera.println (str);

La salida es:

Aclass@6FF3C5B5

Este es un texto con codificación corta, no muy útil para el usuario. El usuario podría haber preferido algo como:

prop1 => 1;
prop2 => 2;

Estas son las diferentes propiedades (campos) y sus valores. Lo que separa una propiedad de su valor en la impresión es "=>", que debe ser introducido por el programador. En una pregunta como esta, los métodos generalmente no se imprimen.

Formación

Considere el siguiente programa, donde se debe imprimir la matriz como objeto, arr,:

clase pública THECLASS
public static void main (string [] args)
String [] arr = new String [] "One", "Two", "Three";
Cadena str = arrry.Encadenar();
Sistema.afuera.println (str);

La salida es,

[Ljava.lang.Cadena;@D716361

que es otro código de texto. Es eso lo que querías? Te hubiera encantado ver algo como:

Uno, dos, tres

Donde el separador de elementos está "",.

Lista

Considere el siguiente programa, donde se debe imprimir una lista de matrices como objeto, Al,:

importar java.utilizar.*;
clase pública THECLASS
public static void main (string [] args)
ArrayList al = new ArrayList ();
Alabama.Agrega uno"); Alabama.agregar ("dos"); Alabama.agregar ("tres");
Cadena str = al.Encadenar();
Sistema.afuera.println (str);

La salida es:

[Uno, dos, tres]

La salida es bastante buena! Esto significa que el programador no tiene que anular el objeto.método toString () cuando se refiere a ArrayList (o posible lista en general). Sin embargo, cuando se trata de objetos definidos por el programador o la matriz, el programador debe anular el método.

Mapa

Considere el siguiente programa, donde se debe imprimir un hashmap como objeto, HM,:

importar java.utilizar.*;
clase pública THECLASS
public static void main (string [] args)
Hashmap hm = new Hashmap ();
hm.poner ("uno", 1); hm.poner ("dos", 2); hm.poner ("tres", 3);
Cadena str = hm.Encadenar();
Sistema.afuera.println (str);

La salida es:

uno = 1, dos = 2, tres = 3

La salida es bastante buena! Los pares de clave/valor son distinguibles, con el separador de elementos, "," ",. Esto significa que el programador no tiene que anular el objeto.método toString (), cuando se trata del hashmap (o el posible mapa en general). Sin embargo, cuando se trata de objetos definidos por el programador o la matriz, el programador debe anular el método.

El resto de este artículo trata sobre la anulación del objeto.ToString () Método heredado del objeto definido por el programador y la matriz.

Primordial toString ()

Formación

Con la matriz, hoy, la primaria es indirecta o en la solución. Java tiene una clase llamada, matrices. Esta clase tiene el método ToString, ya anulado por Java. En la clase, el método toString () es estático: esto significa que la clase de matrices no tiene que ser instanciada para su método toString () a utilizar. Aquí, el método toString () toma un argumento, que es el identificador de la matriz. Produce una salida, donde el separador es "". Matrices de clase, está en el Java.utilizar.* paquete. El siguiente programa muestra la solución para matrices:

importar java.utilizar.*;
clase pública THECLASS
public static void main (string [] args)
double [] arr = new Double [] 10.1, 20.2, 30.3;
Cadena str = matrices.toString (arr);
Sistema.afuera.println (str);

La salida es:

[10.1, 20.2, 30.3]

La salida es bastante buena! Y así, hoy, el programador ya no necesita codificar un método primordial, para el método toString (), para la matriz Java. El programador hace una solución con matrices y su toString ().

Objeto definido del programador

Con la clase definida del programador, el método toString () de la clase de objeto solo debe redefinirse, como se ilustra en la siguiente clase definida del programador:

Clase Aclass
int prop1 = 1;
int prop2 = 2;
void mthd ()
Sistema.afuera.println ("visto");

@Anular
public String toString ()
Cadena str1 = "prop1 =>" + esto.prop1;
Cadena str2 = "prop2 =>" + esto.prop2;
return str1 + '\ n' + str2;

La técnica es usar el operador de concatenación de cadenas, + para unir literales que no. El anterior "@Override" evita ciertos errores en el método anulado. La redefinición aquí está anulando. Una clase definida por programador corresponde al objeto definido por el programador. El siguiente método Java Main () es apropiado para la clase anterior:

clase pública THECLASS
public static void main (string [] args)
Aclass obj = new Aclass ();
Cadena str = obj.Encadenar();
Sistema.afuera.println (str);

La salida es:

PROP1 => 1
Prop2 => 2

El usuario aprecia mejor esta salida que el código de texto corto, "Aclass@6ff3c5b5". No olvide que la definición primaria tiene lugar en la clase de interés.

Conclusión

La clase de objeto tiene un método llamado, toString (). Este método devuelve una representación de cadena del objeto de una clase. Todas las clases heredan este método desde el objeto de clase. Cada matriz (como objeto) tiene un método similar. Cada clase necesita anular este método, indirectamente o directamente.

Con tipos primitivos, use los tipos de referencia (E.gramo., Entero para int), donde Java ya tiene un método predefinido toString () toString (), que es satisfactorio. Con listas y mapas, también, Java ya tiene un método predefinido de toString (), que es satisfactorio. Con una matriz, haga una solución: use el método toString () de la clase de matrices. Con la clase definida por el programador, haga la prima real, utilizando el operador de concatenación de cadenas, +, con la mayor frecuencia posible.