Como usar o método toString em Java
Autor: Rita Cury
Classe Object
O pacote java.lang possui as classes básicas da linguagem Java e é o único package que não precisa ser importado para que suas classes sejam usadas. Dentre tantas classes deste pacote, está a classe Object que é a raiz para criar todas as classes em Java.
Portanto, todas as classes da linguagem, mais aquelas escritas por nós programadores, herdam implicitamente de Object.
Ao desenvolver esta classe, os criadores de Java abstraíram os comportamentos mínimos que todos os objetos deveriam ter. Assim, Object, a superclasse de todas as classes, possui 11 métodos. Neste artigo, abordaremos o método toString.
O método toString retorna uma representação string de um objeto. Na classe Object, este método está escrito de maneira a retornar o nome da classe da qual o objeto é instância, o sinal de arroba “@”, e a representação hexadecimal sem sinal do código hash do objeto.
Na classe Object, o método toString está escrito assim:
- package java.lang;
- public class Object {
- public String toString() {
- return getClass().getName() + “@” + Integer.toHexString(hashCode());
- }
- // restante da classe Object
- }
Podemos usar a palavra reservada this quando precisarmos fazer referência a um objeto dentro da própria classe. Diante desta consideração, vejamos o que acontece quando mandamos imprimir this no código abaixo:
- package classeObject;
- public class Fornecedor {
- private String nome;
- private String telefone;
- public String getNome() {
- return nome;
- }
- public void setNome(String nome) {
- this.nome = nome;
- }
- public String getTelefone() {
- return telefone;
- }
- public void setTelefone(String telefone) {
- this.telefone = telefone;
- }
- public void imprimir(){
- System.out.println(“Objeto: ” + this);
- System.out.println(“————————————“);
- }
- }
Na linha 18 do código anterior, estamos solicitando a impressão de this. Vamos verificar o resultado da chamada à imprimir() na classe CadastraFornecedores:
- package classeObject;
- public class CadastraFornecedores {
- public static void main(String[] args) {
- Fornecedor f = new Fornecedor();
- f.setNome(“Casa de Carne Boi Gordo Ltda”);
- f.setTelefone(“11 32101-1010”);
- f.imprimir();
- }
- }
Ao executarmos o código anterior, o resultado será:
Compiling 1 source file to C:UsersRitaCuryDocumentsNetBeansProjectsEstudoJavabuildclasses
compile-single:
run-single:
Objeto: classeObject.Fornecedor@19821f
————————————
CONSTRUÍDO COM SUCESSO (tempo total: 0 segundos)
Observamos que o resultado referente à linha 18 da classe Fornecedor foi Objeto: classeObject.Fornecedor@19821f, onde, classeObject.Fornecedor, é o nome totalmente qualificado da classe Fornecedor, o sinal de @ e 19821f é o hexadecimal sem sinal do código hash do objeto. O que não significa muita coisa a um usuário final que esteja fazendo uso desta saída.
Contudo, por meio do polimorfismo, podemos sobrescrever o método toString da super classe Object em nossa classe Fornecedor, para mudarmos a representação dos objetos do tipo Fornecedor:
- package classeObject;
- public class Fornecedor {
- private String nome;
- private String telefone;
- public String toString() {
- return “Fornecedor:” + getNome() + ” nTelefone: ” + getTelefone();
- }
- public String getNome() {
- return nome;
- }
- public void setNome(String nome) {
- this.nome = nome;
- }
- public String getTelefone() {
- return telefone;
- }
- public void setTelefone(String telefone) {
- this.telefone = telefone;
- }
- public void imprimir(){
- System.out.println(this);
- System.out.println(“————————————“);
- }
- }
Na linha 5 do código anterior, fizemos o override do método toString na classe Fornecedor, cujo retorno agora será uma string composta pelas informações referentes ao nome e telefone.
Ao executarmos novamente a classe CadastraFornecedores, o resultado será:
Compiling 1 source file to C:UsersRitaCuryDocumentsNetBeansProjectsEstudoJavabuildclasses
compile-single:
run-single:
Fornecedor: Casa de Carne Boi Gordo Ltda
Telefone: 11 32101-1010
————————————
CONSTRUÍDO COM SUCESSO (tempo total: 0 segundos)
É altamente recomendável que todas as classes substituam o método toString usando-se uma representação resumida e informativa que torne sua leitura fácil e objetiva. No caso do nosso exemplo, sempre que this for chamado, retornará o conteúdo dos atributos “nome” e “telefone” dos objetos do tipo Fornecedor.
Você está cansado de explicar Java para seus amigos? Então indique a um amigo o Guia Básico de Programação em Java:
Batemos tanto nessa tecla que não tem como esquecer isso Rita. Abraço
Qualidade excepcional professora!
Parabéns!