JavaRush /Blogue Java /Random-PT /10 dicas para substituir o método toString() em Java (Par...
Ku6ep
Nível 35

10 dicas para substituir o método toString() em Java (Parte 1)

Publicado no grupo Random-PT
10 dicas para substituir o método toString() em Java - ToStringBuilder Netbeans Eclipse 10 dicas para substituir o método toString() em Java (Parte 1) - 1

Método toString Java

toStringO 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 toStringpode ajudar no registro e na depuração de um programa Java, fornecendo informações valiosas e importantes. Como toString()ele é definido em java.lang.Objectuma 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. TradeEmployeetoStringtoStringpackage.class@hashCodetoString()toString()CountrySocketServerSockettoStringtoStringtoString

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 Java toString. toString()A classe regular java.util.Datenã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 Datee 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 Dateem 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étodo toString()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étodo toString()em Java, use StringBuilder para adicionar atributos individuais. Se você estiver usando um IDE como Eclipse , Netbeans ou IntelliJ, usar StringBuildero método and append()em vez do operador + para compor toStringtambém é o caminho a seguir. Por padrão, tanto o Eclipse quanto o Netbeans são gerados toStringcom o operador de concatenação.

Usando a anotação @Override

Usar @Overridea 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étodo toStringe 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 Collectiontal ArrayListou HashSet para Arrayarmazenar outros objetos.

Dicas bônus

Mais algumas dicas extras sobre substituição de métodos toStringem Java.
  1. Imprima a saída toStringem várias linhas ou em uma com base em seu comprimento.

  2. Inclua nomes de classes totalmente qualificados na representação toString, em outras palavras, package.classpara evitar qualquer mal-entendido.

  3. Você pode pular valores nulos ou mostrá-los, mas é melhor mostrá-los. Às vezes eles são úteis porque mostram qual campo está presente nulldurante algum incidente, por exemplo NullPointerException .

  4. Use um formato de valor-chave, por exemplo member.name=member.value, a maioria dos IDEs suporta isso.

  5. Inclua membros herdados se achar que eles devem fornecer as informações necessárias à classe herdeira.

  6. À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.

Comentários
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION