CodeGym /Blogue Java /Random-PT /Método Java toString()
John Squirrels
Nível 41
San Francisco

Método Java toString()

Publicado no grupo Random-PT
Muitas vezes, ao criar um programa, é necessário descobrir o conteúdo de um objeto. Para esses propósitos, a classe Java Object , a classe Java mais básica na hierarquia de classes, define um método toString() especial. Ele retorna uma sequência de caracteres que descreve o objeto. A implementação padrão do método toString() em Java produz uma saída como esta:
package.class@hashCode
ou seja, toString , que foi definido em java.lang.Object fornece o código hash do objeto em formato hexadecimal. Muitas vezes isso não é muito claro e útil. Portanto, ao criar uma nova classe, é comum substituir toString() para que a string de retorno contenha o nome da classe, nomes e valores de todas as variáveis. Substituir o método toString corretamente pode ajudar no registro e na depuração de um programa Java, pois fornece informações valiosas e importantes. Simplificando, o método toString() é usado em Java para obter um objeto string que representa o valor de um objeto numérico. Em outras palavras, ele converte um número em uma string. Se o método usar um tipo de dados simples como argumento, será retornado um objeto string que representa o valor do tipo de dados simples.

Exemplo de método Java toString()

Normalmente se você cria uma classe, além do método toString() em Java você precisa sobrescrever os métodos equals , hashCode e compareTo para saber como trabalhar com seus objetos. Mas, por enquanto, vamos nos concentrar em toString . Na maioria dos casos, enviar informações textuais sobre um objeto é bastante simples. Você só precisa entender exatamente o que o usuário gostaria de ver ao fazer login. Vamos dar um exemplo e criar uma Classe que descreva um ponto no plano. Possui duas coordenadas: coordenadaX, coordenadaY. Naturalmente, eles deverão ser exibidos na tela se um usuário perguntar “que objeto é esse”, assim como o nome da própria classe. Isso é o que demonstraremos no método toString() substituído . Agora criamos a própria classe, seus campos (coordenadas), um construtor, getters para obtenção de coordenadas (claro, é possível não criá-los, mas do ponto de vista do uso correto de OOP, getters são uma boa prática). Apenas para ilustrar, vamos também criar um método que crie um novo ponto — a soma dos outros dois, e também sobrescreva os métodos equals e hashCode .
public class Point implements Comparable<Point> {
   private final int coordinateX;
   private final int coordinateY;

   public Point(final int coordinateX, final int coordinateY) {
       this.coordinateX = coordinateX;
       this.coordinateY = coordinateY;
   }

   public int getX() {
       return coordinateX;
   }

   public int getY() {
       return coordinateY;
   }

   public Point sum(final Point that) {
       return new Point(coordinateX + that.coordinateX, coordinateY + that.coordinateY);
   }

// here we override toString with coordinates and class name
   @Override
   public String toString() {
       return "Point{"
               + "X: " + getX()
               + ", Y: " + getY()
               +  '}';
   }

   @Override
   public boolean equals(Object o) {
       if (o == this) {
           return true;
       }
       if (o == null || o.getClass() != this.getClass()) {
           return false;
       }

   @Override
   public int hashCode() {
       return coordinateX + coordinateY;

   }
Agora vamos criar uma classe de teste e um método principal. Aí temos dois pontos e o terceiro, que obtemos da soma de dois pontos. Aplicamos o método toString a este ponto e o imprimimos.
//toString() method demo
public class Test {
   public static void main(String[] args) {
       Point myPoint1 = new Point(5,7);
       Point myPoint2 = new Point(-2, 8);
       Point mySum = myPoint1.sum(myPoint2);
     //call toString explicitly
       System.out.println(mySum.toString());
   }
}
O resultado deste trabalho do programa está abaixo:
Ponto {X: 3, Y: 15}
Na verdade, você não precisa chamar explicitamente o método toString e, na maioria das vezes, não o faz. Para chamar o método toString() , basta passar o objeto desejado para System.out.println . Portanto, nossa classe de teste ficará assim:
//toString method demo
public class Test {
   public static void main(String[] args) {
       Point myPoint1 = new Point(5,7);
       Point myPoint2 = new Point(-2, 8);
       Point mySum = myPoint1.sum(myPoint2);
       //call toString implicitly
       System.out.println(mySum);
   }
}
A saída do programa é a mesma de antes. E se não substituirmos o método toString , mas quisermos imprimir o objeto? Neste caso, o método toString da classe Object será chamado. No nosso exemplo, se removermos o método toString da nossa classe Point , e deixarmos tudo como está na classe de teste, obteremos o seguinte resultado:
Ponto@12
Aqui temos o código hash do objeto em hexadecimal.
Comentários
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION