JavaRush /Java Blog /Random-IT /10 suggerimenti per sovrascrivere il metodo toString() in...
Ku6ep
Livello 35

10 suggerimenti per sovrascrivere il metodo toString() in Java (parte 1)

Pubblicato nel gruppo Random-IT
10 suggerimenti per sovrascrivere il metodo toString() in Java - ToStringBuilder Netbeans Eclipse 10 suggerimenti per sovrascrivere il metodo toString() in Java (parte 1) - 1

Metodo Java toString

toStringIl metodo in Java viene utilizzato per fornire informazioni chiare e sufficienti su un oggetto ( Object) in un formato leggibile dall'uomo. L'override corretto del metodo toStringpuò aiutare nella registrazione e nel debug di un programma Java fornendo informazioni preziose e importanti. Poiché toString()è definito in java.lang.Objectuna classe e la sua implementazione predefinita non fornisce molte informazioni, è sempre consigliabile sovrascrivere questo metodo in una classe discendente. Infatti, se stai creando una classe importante o generale di tipo Order, Tradeo Employee, sovrascrivi sempre equals , hashCode , compareTo e i toStringmetodi in Java. Per impostazione predefinita l'implementazione toStringproduce output nel formato , package.class@hashCodead esempio per il nostro esempio il metodo della classe stamperà test.Country@18e2b22 dove 18e2b22 è il codice hash dell'oggetto in esadecimale, se chiami il metodo hashCode restituirà 260943370 che è il equivalente decimale di 18e2b22. Queste informazioni non sono particolarmente utili durante la ricerca di un problema. Diamo un'occhiata a un esempio di vita reale in cui devi trovare un problema nella tua connessione di rete, nel caso in cui desideri sapere a quale host e porta il tuo sistema sta tentando di connettersi e se o stampa solo le informazioni predefinite, lo sarà impossibile immaginare il vero problema, ma con un'implementazione sovrascritta possono fornire informazioni utili come nome host e numero di porta. In questo tutorial Java forniremo alcuni suggerimenti sull'override del metodo con esempi di codice. toString()toString()CountrySocketServerSockettoStringtoStringtoString

Come sovrascrivere il metodo toString in Java:

Stampa la data formattata (ad esempio giorno/mese/anno) invece del valore grezzo. Questo è un suggerimento molto utile quando si sovrascrive un metodo Java toString. toString()La classe normale java.util.Datenon restituisce una data formattata e include molti dettagli che non sono sempre necessari. Se stai utilizzando DateFormat parziale, ad es. gg-MM-aa nella tua applicazione, allora vorrai sicuramente vedere questo formato invece di quello predefinito. L'IDE di solito non genera output formattato Datee questo è qualcosa che dovrai fare da solo, ma ne vale la pena. Leggi Come stampare la data nel formato ggMMaa in Java per i dettagli sulla formattazione Datein Java. A questo scopo puoi anche utilizzare la classe SimpleDataFormat o la libreria Joda Date time.

Documentare il formato toString

Se il tuo metodo toString()non restituisce dati come field=value, allora è una buona idea documentare il formato di output toString, soprattutto per oggetti importanti come Employee o Student. Ad esempio, se un metodo toString()di classe Работник(Employee)stampa " John-101-Sales-9846387321 ", allora una buona pratica sarebbe quella di specificare il formato come "nome-id-contatto-dipartimento", ma allo stesso tempo non consentire al client di ottenere informazioni dal metodo toString(), dovresti sempre fornire metodi appropriati per recuperare i dati, come getName(), getId(), getContact()e così via, poiché le informazioni ottenute toString()dalla rappresentazione dell'oggetto sono fragili e soggette a errori, quindi il client dovrebbe sempre avere un percorso pulito per ottenere le informazioni informazione.

Utilizza StringBuilder per comporre l'output di toString()

Se stai scrivendo codice per un metodo toString()in Java, utilizza StringBuilder per aggiungere singoli attributi. Se stai utilizzando un IDE come Eclipse , Netbeans o IntelliJ, anche utilizzare StringBuilderil metodo e append()anziché l'operatore + per comporre toStringè la strada da percorrere. Per impostazione predefinita, sia Eclipse che Netbeans generano toStringcon l'operatore di concatenazione.

Utilizzando l'annotazione @Override

L'utilizzo @Overridedell'override del metodo in Java è una delle migliori pratiche del linguaggio. Ma questo suggerimento non è così importante come lo sarebbe nel caso dell'override dei metodi equals()and compareTo(), poiché l'overload invece dell'override può creare errori più sottili difficili da calcolare. In ogni caso è meglio usare l'annotazione @Overrride.

Stampare il contenuto di un array invece di stampare l'oggetto dell'array

Un array è un oggetto in Java ma non sovrascrive un metodo toStringe quando si stampa un array il formato di output predefinito non è molto utile poiché vorremmo vedere il contenuto dell'array. A proposito, questo è un altro motivo per cui l'array char[] è preferibile a String per archiviare dati sensibili come una password. Prenditi il ​​tempo necessario per verificare se stampare il contenuto di un array aiuta o meno i tuoi clienti e, se ha senso, stampa il contenuto dell'array anziché l'oggetto stesso. Per motivi di prestazioni, è preferibile utilizzare Collectiontale ArrayListo HashSet invece Arraydi archiviare altri oggetti.

Suggerimenti aggiuntivi

Altri suggerimenti bonus sull'override del metodo toStringin Java.
  1. Stampa l'output toStringsu più righe o su una in base alla sua lunghezza.

  2. Includere nomi di classi completi nella rappresentazione toString, in altre parole package.classper evitare qualsiasi malinteso.

  3. Puoi saltare i valori nulli o mostrarli, ma è meglio mostrarli. A volte sono utili perché mostrano quale campo è presente nulldurante qualche incidente, ad esempio NullPointerException .

  4. Utilizza un formato chiave-valore, ad esempio member.name=member.value, la maggior parte degli IDE lo supporta.

  5. Includi i membri ereditati se ritieni che debbano fornire le informazioni necessarie alla classe ereditaria.

  6. A volte un oggetto contiene molti parametri opzionali e obbligatori, come abbiamo mostrato nel nostro esempio di modello Builder , quando è quasi impossibile stampare tutti i campi, in questo caso possiamo stampare solo i campi obbligatori, soprattutto perché ne abbiamo di opzionali.

Commenti
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION