Método toString Java
toString
O método em Java é usado para fornecer informações claras e suficientes sobre um objeto ( Object
) em um formato legível por humanos. A substituição adequada do método toString
pode ajudar no registro e na depuração de um programa Java, fornecendo informações valiosas e importantes. Como toString()
ele é definido em java.lang.Object
uma classe e sua implementação padrão não fornece muitas informações, é sempre uma boa prática substituir esse método em uma classe descendente. Na verdade, se você estiver criando uma classe importante ou geral do tipo ou Order
, sempre substitua os métodos equals , hashCode , compareTo e em Java. Por padrão a implementação produz saída no formato , por exemplo para nosso exemplo o método de classe imprimirá test.Country@18e2b22 onde 18e2b22 é o código hash do objeto em hexadecimal, se você chamar o método hashCode ele retornará 260943370 que é o equivalente decimal de 18e2b22. Esta informação não é particularmente útil ao procurar um problema. Vejamos um exemplo da vida real onde você precisa encontrar um problema em sua conexão de rede, caso queira saber a qual host e porta seu sistema está tentando se conectar e se imprime ou apenas as informações padrão, será É impossível imaginar o problema real, mas com uma implementação substituída eles podem fornecer informações úteis, como nome do host e número da porta. Neste tutorial Java daremos algumas dicas sobre substituição de métodos com exemplos de código. Trade
Employee
toString
toString
package.class@hashCode
toString()
toString()
Country
Socket
ServerSocket
toString
toString
toString
Como substituir o método toString em Java:
Imprime a data formatada (ou seja, dia/mês/ano) em vez do valor bruto. Esta é uma dica muito útil ao substituir um método JavatoString
. toString()
A classe regular java.util.Date
não gera uma data formatada e inclui muitos detalhes que nem sempre são necessários. Se você estiver usando DateFormat parcial, ou seja, dd-MM-aa em seu aplicativo, então você definitivamente gostaria de ver esse formato em vez do formato padrão. O IDE normalmente não gera saída formatada Date
e isso é algo que você mesmo precisará fazer, mas vale a pena. Leia Como imprimir data no formato ddMMyy em Java para obter detalhes sobre formatação Date
em Java. Você também pode usar a classe SimpleDataFormat ou a biblioteca Joda Date time para isso.
Documentando o formato toString
Se o seu métodotoString()
não gerar dados como campo=valor, então é uma boa ideia documentar o formato de saída toString
, especialmente para objetos importantes como Funcionário ou Aluno. Por exemplo, se um método toString()
de classe Работник(Employee)
imprimir " John-101-Sales-9846387321 " então uma boa prática seria especificar o formato como "nome-id-departamento-contato", mas ao mesmo tempo não permitir que o cliente obtenha informações do método toString()
, você deve sempre fornecer métodos apropriados para recuperação de dados, como getName()
, getId()
, getContact()
e assim por diante, pois as informações obtidas toString()
da representação do objeto são frágeis e sujeitas a erros, portanto o cliente deve sempre ter um caminho limpo para obter o Informação.
Use StringBuilder para compor a saída de toString()
Se você estiver escrevendo código para um métodotoString()
em Java, use StringBuilder para adicionar atributos individuais. Se você estiver usando um IDE como Eclipse , Netbeans ou IntelliJ, usar StringBuilder
o método and append()
em vez do operador + para compor toString
também é o caminho a seguir. Por padrão, tanto o Eclipse quanto o Netbeans são gerados toString
com o operador de concatenação.
Usando a anotação @Override
Usar@Override
a substituição de método em Java é uma das melhores práticas da linguagem. Mas esta dica não é tão importante como seria no caso de substituir os métodos equals()
and compareTo()
, uma vez que sobrecarregar em vez de substituir pode criar erros mais sutis que são difíceis de calcular. De qualquer forma, é melhor usar a anotação @Overrride
.
Imprimindo o conteúdo de um array em vez de imprimir o objeto array
Um array é um objeto em Java, mas não substitui um métodotoString
e quando você imprime um array, o formato de saída padrão não é muito útil, pois gostaríamos de ver o conteúdo do array. A propósito, esta é outra razão pela qual o array char[] é preferível ao String para armazenar dados confidenciais, como uma senha. Reserve um tempo para verificar se imprimir o conteúdo de um array ajuda seus clientes ou não e, se fizer sentido, imprima o conteúdo do array em vez do próprio objeto. Por razões de desempenho, é preferível usar Collection
tal ArrayList
ou HashSet para Array
armazenar outros objetos.
Dicas bônus
Mais algumas dicas extras sobre substituição de métodostoString
em Java.
-
Imprima a saída
toString
em várias linhas ou em uma com base em seu comprimento. -
Inclua nomes de classes totalmente qualificados na representação
toString
, em outras palavras,package.class
para evitar qualquer mal-entendido. -
Você pode pular valores nulos ou mostrá-los, mas é melhor mostrá-los. Às vezes eles são úteis porque mostram qual campo está presente
null
durante algum incidente, por exemplo NullPointerException . -
Use um formato de valor-chave, por exemplo
member.name=member.value
, a maioria dos IDEs suporta isso. -
Inclua membros herdados se achar que eles devem fornecer as informações necessárias à classe herdeira.
-
Às vezes um objeto contém muitos parâmetros opcionais e obrigatórios, como mostramos em nosso exemplo de template do Builder , quando é quase impossível imprimir todos os campos, neste caso podemos imprimir apenas os campos obrigatórios, principalmente porque temos opcionais.
GO TO FULL VERSION