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 2)

Publicado no grupo Random-PT

Exemplos de toString em Java

Usaremos a classe a seguir para demonstrar nosso exemplo toString para Netbeans, Eclipse e utilitário ToStringBuilder do Apache.

/** * Java программа, демонстрирующая How переопределить метод toString() в Java. * Эта Java программа показывает How вы можете использовать IDE типа Netbeans or Eclipse * и открытую библиотеку типа Apache commons ToStringBuilder для * переопределения toString в Java. * @author Javarevisited.blogspot.com */ public class Country { private String name; private String capital; private long population; private Date independenceDay; public Country(String name){ this.name = name; } public String getName(){ return name; } public void setName(String name) {this.name = name;} public String getCapital() {return capital;} public void setCapital(String capital) {this.capital = capital;} public Date getIndependenceDay() {return independenceDay;} public void setIndependenceDay(Date independenceDay) {this.independenceDay = independenceDay;} public long getPopulation() { return population; } public void setPopulation(long population) {this.population = population; } @Override public String toString() { return "Country{" + "capital=" + capital + ", population=" + population + ", independenceDay=" + independenceDay + '}'; } public void setIndependenceDay(String date) { DateFormat format = new SimpleDateFormat("dd/MM/yyyy"); try { this.independenceDay = format.parse(date); } catch (ParseException ex) { Logger.getLogger(Country.class.getName()).log(Level.SEVERE, null, ex); } } public static void main(String args[]) { Country India = new Country("India"); India.setCapital("New Delhi"); India.setIndependenceDay("15/07/1947"); India.setPopulation(1200000000); System.out.println(India); } }

O método toString criado pelo Netbeans IDE


O método toString gerado pelo Netbeans IDE produz a seguinte saída para a classe definida acima:

Country{capital=New Delhi, population=1200000000, independenceDay=Fri Aug 15 00:00:00 VET 1947}

Se você observar a saída acima, verá que o Netbeans não está criando a data formatada para você: em vez disso, ele está chamando o método toString() da classe java.util.Date

O método toString() criado pelo Rclise IDE


Por padrão, o Eclipse cria o seguinte método toString:

@Override public String toString() { return "Country [name=" + name + ", capital=" + capital + ", population=" + population + ", independenceDay=" + independenceDay + "]"; }

Você pode gerar código para o método toString no Eclipse clicando em Source -> Generate toString(). Também oferece diversas possibilidades, como escolher o estilo do código, ou seja, utilizar o operando de concatenação ou StringBuilder e assim por diante. Abaixo está a saída do método toString() que acabamos de criar no Eclipse:

Country [name=India, capital=New Delhi, population=1200000000, independenceDay=Tue Jul 15 00:00:00 VET 1947]

Usando ToStringBuilder para substituir o método toString() do Java

Junto com muitas classes úteis, como PropertyUtils , EqualsBuilder ou HashCodeBuilder, o Apache também fornece ToStringBuilder que pode gerar código para gerar o método toString() em vários estilos diferentes. Vamos ver como fica a saída do método toString no estilo simples e multilinha: Estilo simples:

India,New Delhi,1200000000,Fri Aug 15 00:00:00 VET 1947

Estilo multilinha:

test.Country@f0eed6[
 name=India
 capital=New Delhi
 population=1200000000
 independenceDay=Fri Aug 15 00:00:00 VET 1947
 ]

NO_FIELD_NAMES_STYLE (estilo sem nomes de campo)

test.Country@1d05c81[India,New Delhi,1200000000,Fri Aug 15 00:00:00 VET 1947]

SHORT_PREFIX_STYLE (estilo de prefixo curto)

Country[name=India,capital=New Delhi,population=1200000000,independenceDay=Fri Aug 15 00:00:00 VET 1947]

ToStringStyle.DEFAULT_STYLE (estilo padrão)

test.Country@1d05c81[name=India,capital=New Delhi,population=1200000000,independenceDay=Fri Aug 15 00:00:00 VET 1947]

Uma biblioteca de código aberto semelhante do Google, Guava também fornece uma API conveniente para gerar código para o método toString em Java.

Quando o método toString é chamado em Java

toString é um método bastante específico e é chamado a partir de muitos métodos JavaAPI, como println(), printf() , logging, instruções assert , depuradores IDE, ao imprimir coleções e ao concatenar. Se uma subclasse não substituir toString(), então a implementação padrão definida na classe Object será chamada. Muitos desenvolvedores usam APIs de log como Log4J ou java.util.Logger para gerar logs e muitas vezes perdem Object aqui.

logger.info("Customer not found:" + customer)

e se o Cliente não substituir toString e gerar informações importantes como customerId, customerName, etc. então será muito difícil diagnosticar o problema. É por isso que sempre vale a pena substituir toString em Java. Vamos dar uma olhada em alguns dos benefícios se fizermos isso.

Benefícios de substituir o método toString

  1. Conforme discutido acima, um toString substituído corretamente ajuda na depuração , imprimindo informações importantes.
  2. Se um objeto importante for armazenado em uma coleção, a impressão da coleção chamará o método toString do objeto armazenado, que pode imprimir as informações importantes. Um exemplo clássico de método toString não substituído é Array em Java, que imprime o resultado da implementação padrão em vez do conteúdo do array. Embora existam várias maneiras de imprimir o conteúdo de um array usando Arrays.toString() e similares; mas como Array é um objeto Java, seria muito melhor se ele soubesse imprimir a si mesmo, assim como classes de coleção como List ou Set .

Esses são apenas alguns dos benefícios que você obterá ao implementar ou substituir o método toString em Java . Há muitos outros benefícios que você obterá e aprenderá por si mesmo. Espero que essas dicas ajudem você a aproveitar ao máximo suas implementações toString. Deixe-nos saber se você conhece alguma maneira exclusiva de trabalhar com toString que o ajude em seus aplicativos Java.

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