sobreescribir redefinir método metodos metodo java

java - redefinir - sobreescribir el método tostring()



¿Cómo sobrescribir toString() correctamente en Java? (7)

Suena un poco estúpido, pero necesito ayuda con mi método toString () y es muy molesto. Intenté buscar en línea porque toString es el que está jodiendo y "no encuentra el constructor Kid # 2" aunque esté allí e incluso haría algo más y no funciona. Ok eso fue mucho, así que aquí está mi código:

import java.util.*; class Kid { String name; double height; GregorianCalendar bDay; public Kid () { this.name = "HEAD"; this.height = 1; this.bDay = new GregorianCalendar(1111,1,1); } public Kid (String n, double h, String date) { // method that toString() can''t find somehow StringTokenizer st = new StringTokenizer(date, "/", true); n = this.name; h = this.height; } public String toString() { return Kid(this.name, this.height, this.bDay); } } //end class

Ok, mi toString arriba (lo sé, mi tercer parámetro está desactivado, debería ser una cadena) está desactivado. Si codigo un valor para el tercero, se vuelve loco y dice que no puede encontrarlo (arriba). Entonces, ¿cómo puedo obtener la fecha y romperla?

Llamando a la clase esto está debajo

class Driver { public static void main (String[] args) { Kid kid1 = new Kid("Lexie", 2.6, "11/5/2009"); System.out.println(kid1.toString()); } //end main method } //end class

Intenté investigar varios constructores y realmente no sirvió de nada. Intenté investigar los métodos de String () y traté de usar la lógica anterior de métodos toString () que creé anteriormente, pero esto es completamente nuevo, así que nunca funcionó.

¿Ayuda?


Bueno, en realidad tendrá que devolver algo como esto porque toString tiene que devolver una cadena

public String toString() { return "Name :" + this.name + "whatever :" + this.whatever + ""; }

y realmente haces algo mal en el constructer, estableces la variable que el usuario configuró para el nombre, mientras que debes hacer lo contrario. Lo que no debes hacer

n = this.name

Qué deberías hacer

this.name = n

Espera que esto ayude gracias


El siguiente código es una muestra. Pregunta basada en lo mismo, en lugar de utilizar la conversión basada en IDE, ¿existe una forma más rápida de implementarla para que en el futuro se produzcan los cambios, no es necesario que modifiquemos los valores una y otra vez?

@Override public String toString() { return "ContractDTO{" + "contractId=''" + contractId + ''/''' + ", contractTemplateId=''" + contractTemplateId + ''/''' + ''}''; }


Método Java toString ()

Si desea representar cualquier objeto como una cadena, el método toString () entra en existencia.

El método toString () devuelve la representación de cadena del objeto.

Si imprime cualquier objeto, el compilador java invoca internamente el método toString () en el objeto. Así que anulando el método toString (), devuelve el resultado deseado, puede ser el estado de un objeto, etc. depende de su implementación.

Ventaja del método Java toString ()

Al anular el método toString () de la clase Object, podemos devolver valores del objeto, por lo que no es necesario escribir mucho código.

Salida sin el método toString ()

class Student{ int id; String name; String address; Student(int id, String name, String address){ this.id=id; this.name=name; this.address=address; } public static void main(String args[]){ Student s1=new Student(100,”Joe”,”success”); Student s2=new Student(50,”Jeff”,”fail”); System.out.println(s1);//compiler writes here s1.toString() System.out.println(s2);//compiler writes here s2.toString() } } Output:Student@2kaa9dc Student@4bbc148

Puedes ver en el ejemplo anterior n. ° 1. la impresión s1 y s2 imprime los valores Hashcode de los objetos, pero quiero imprimir los valores de estos objetos. Como el compilador java llama internamente al método String (), anulando este método devolverá los valores especificados. Comprendamos esto con el ejemplo que se muestra a continuación:

Example#2 Output with overriding toString() method class Student{ int id; String name; String address; Student(int id, String name, String address){ this.id=id; this.name=name; this.address=address; } //overriding the toString() method public String toString(){ return id+" "+name+" "+address; } public static void main(String args[]){ Student s1=new Student(100,”Joe”,”success”); Student s2=new Student(50,”Jeff”,”fail”); System.out.println(s1);//compiler writes here s1.toString() System.out.println(s2);//compiler writes here s2.toString() } } Output:100 Joe success 50 Jeff fail

Tenga en cuenta que toString () se relaciona principalmente con el concepto de polimorfismo en Java. En, Eclipse, intente hacer clic en toString () y haga clic derecho sobre él. Luego, haga clic en Abrir declaración y vea de dónde viene la Superclase toString ().


No puedes llamar a un constructor como si fuera un método normal, solo puedes llamarlo con new para crear un nuevo objeto:

Kid newKid = new Kid(this.name, this.height, this.bDay);

Pero construir un nuevo objeto a partir de su método toString () no es lo que desea hacer.


Puede crear un nuevo objeto en toString (). utilizar

return "Name = " + this.name +" height= " + this.height;

en lugar de

return Kid(this.name, this.height, this.bDay);

Puede cambiar la cadena de retorno según sea necesario. Hay otras maneras de almacenar la fecha en lugar de calander.


Se supone que toString debe devolver una String .

public String toString() { return "Name: ''" + this.name + "'', Height: ''" + this.height + "'', Birthday: ''" + this.bDay + "''"; }

Le sugiero que haga uso de las características de su IDE para generar el método toString . No lo codifique a mano.

Por ejemplo, Eclipse puede hacerlo si simplemente hace clic derecho en el código fuente y selecciona Source > Generate toString


incluso podemos escribir así creando un nuevo objeto String en la clase y asignándole lo que queramos en el constructor y devolviéndolo en el método toString, que está anulado

public class Student{ int id; String name; String address; String details; Student(int id, String name, String address){ this.id=id; this.name=name; this.address=address; this.details=id+" "+name+" "+address; } //overriding the toString() method public String toString(){ return details; } public static void main(String args[]){ Student s1=new Student(100,"Joe","success"); Student s2=new Student(50,"Jeff","fail"); System.out.println(s1);//compiler writes here s1.toString() System.out.println(s2);//compiler writes here s2.toString() } }