Olá Pessoal, tudo bom?
O artigo de hoje é uma continuação do artigo deste link, o qual iniciamos a descrição da super classe do Java, a classe Object. No artigo de hoje iremos começar a descrever sobre os métodos existentes dentro da classe, hoje iremos descrever sobre o método toString(), confira na continuação:
Classe Object – método toString()
O método toString() retorna uma String que representa o objeto que está chamando o método. Isso é útil para o propósito de log e debug.
O código base do método toString() da classe Object:
1 2 3 |
public String toString() { return getClass().getName() + "@" + Integer.toHexString(hashCode()); } |
Vamos descrever o que esse método está fazendo. Existem 3 Strings nesse método:
- getClass().getName(): A primeira String é o nome da classe. Como assim o nome da classe??? O nome é Object, pra que isso??? Na não, lembre-se de herança, se o método toString() não for override na classe filha de Object, a classe irá utilizar o método implementado na classe Object, logo o getClass().getName() será a classe filha e não a Object.
- @: Apenas o caractere arroba.
- Integer.toHexString(hashCode()): A última String é o código hashCode(), mais detalhes sobre esse método em posts futuros. Mas para não ficar sem explicação, o método hashCode() retorna um valor numérico, representando esse código pelos valores que estão implícitos nos atributos da instância da classe. Ou seja, se você tem duas instâncias com valores diferentes nos atributos, o valor do hashCode será diferente para cada instância.
Suponha que exista a classe Empregado que não faz override o método toString(), o retorno do método será o seguinte: Empregado@1b4b0f4d
Override do método toString()
Como já descrito anteriormente é possível reimplementar (override) o método toString() em uma classe filha de Object, basta o método possuir a mesma assinatura, inclusive o retorno, para que a JDK assuma que esse método seja chamado primeiramente. Abaixo temos um exemplo de classe que é filha de Object e faz um override do método toString():
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
public class Empregado { private String nome; private int idade; public Employee(String nome, int idade) { this.nome = nome; this.idade = idade; } @Override public String toString() { return this.nome + ": " + this.idade; } } |
O retorno da chamada desse método será o nomeEmpregado:idadeEmpregado.
Obtendo a String que representa um objeto
Para obter a String que representa um objeto basta chamar o método toString() na referencia deste. Ou seja:
1 2 3 4 |
//Codigo Java anterior Empregado empregadoMauda = new Empregado("Mauda", 32); String representacao = empregadoMauda.toString(); //Codigo Java posterior |
A String representacao conterá o valor “Mauda:32”, conforme o código da classe Empregado descrito mais acima neste artigo.
Qual a diferença entre as linhas System.out.println(o.toString());
e System.out.println(o);?
A primeira linha System.out.println(o.toString());
chama o método toString() do objeto o, explicitamente.
Já a linha System.out.println(o);
chama o método toString() do objeto o, implicitamente.
finally{
Assim chegamos ao fim do segundo artigo da série sobre a classe Object.
Duvidas ou sugestões? Deixe seu feedback! Isso ajuda a saber a sua opinião sobre os artigos e melhorá-los para o futuro! Isso é muito importante!
Até um próximo post!
Leave a Reply