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()
}
}