Como replace toString () corretamente em Java?

Soa um pouco estúpido, mas eu preciso de ajuda no meu método toString () e é muito irado. Eu tentei procurar on-line porque o toString é aquele em que ele está estragando tudo e “não encontrando o Kid constructor # 2”, embora esteja lá e eu até faria outra coisa e não funcione. Ok, isso foi muito, então aqui está o meu 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 Então meu toString acima (eu sei, meu terceiro parâmetro está desligado, deve ser um String) está desligado. Se eu codificar um valor para a terceira coisa, isso vai mal e diz que não pode encontrar isso (acima). Então, como posso obter a data e separá-la?

Classe chamando isso está abaixo

 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 

Eu tentei pesquisar vários construtores e isso realmente não ajudou. Eu tentei pesquisar toString () methods e tentei usar lógica de methods toString () anterior que eu criei anterior, mas isso é novo, por isso nunca funcionou.

Socorro?

O toString deve retornar uma String .

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

Eu sugiro que você faça uso dos resources do seu IDE para gerar o método toString . Não codifique manualmente.

Por exemplo, o Eclipse pode fazer isso se você simplesmente clicar com o botão direito do mouse no código-fonte e selecionar Source > Generate toString

Método Java toString ()

Se você quiser representar qualquer object como uma string, o método toString () é criado.

O método toString () retorna a representação de string do object.

Se você imprimir qualquer object, o compilador java chama internamente o método toString () no object. Portanto, sobrescrevendo o método toString (), retorna a saída desejada, pode ser o estado de um object, etc. depende de sua implementação.

Vantagem do método Java toString ()

Ao replace o método toString () da class Object, podemos retornar valores do object, portanto, não precisamos escrever muito código.

Saída sem o 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 

Você pode ver no exemplo acima 1. imprimir s1 e s2 imprime os valores de Hashcode dos objects, mas desejo imprimir os valores desses objects. Como o compilador java chama internamente o método toString (), sobrescrevendo este método retornará os valores especificados. Vamos entender com o exemplo abaixo:

 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 

Note que toString () está principalmente relacionado ao conceito de polymorphism em Java. No Eclipse, tente clicar em toString () e clique com o botão direito do mouse sobre ele. Em seguida, clique em Open Declaration e veja de onde vem a SuperClass toString ().

Você pode criar um novo object no toString (). usar

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

ao invés de

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

Você pode alterar a string de retorno conforme necessário. Existem outras maneiras de armazenar a data em vez de calander.

Você não pode chamar um construtor como se fosse um método normal, você só pode chamá-lo com new para criar um novo object:

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

Mas construir um novo object a partir do seu método toString () não é o que você quer fazer.

O código a seguir é uma amostra. Pergunta com base no mesmo, em vez de usar a conversão baseada em IDE, existe uma maneira mais rápida de implementar para que, no futuro, as alterações ocorram, não precisamos modificar os valores repetidamente?

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

Bem, na verdade você precisará retornar algo assim porque toString tem que retornar uma string

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

e você realmente faz algo errado no construtor, você define a variável que o usuário define como o nome, enquanto você precisa fazer o oposto. O que você não deve fazer

 n = this.name 

O que você deveria fazer

 this.name = n 

Espera que isso ajude obrigado

podemos até escrever assim criando um novo object String na class e atribuindo a ele o que quisermos no construtor e retornando isso no método toString que é sobrescrito

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