Metodo ToString()
Come stampare facilmente un oggetto
Per visualizzare tutti i dati di un oggetto utilizzando il comando System.out.println(object); in Java, esiste un metodo chiamato toString();.
toString()
Il metodo toString in Java è un metodo integrato che appartiene alla classe Object. Viene utilizzato per restituire una rappresentazione testuale di un oggetto. Per impostazione predefinita, quando chiamiamo toString su un oggetto, restituisce una stringa che contiene il nome della classe seguito dall'hashcode dell'oggetto.
Vediamo l'esempio:
Main.java
1234567891011121314151617181920package com.example; class Person { String name; int age; String gender; public Person(String name, int age, String gender) { this.name = name; this.age = age; this.gender = gender; } } public class Main { public static void main(String[] args) { Person bob = new Person("Bob", 20, "male"); System.out.println(bob); } }
HashCode
Un hashcode, in termini semplici, è un identificatore univoco per un oggetto che viene memorizzato in memoria. Possiamo anche visualizzare il codice hash di un oggetto chiamando il metodo hashCode() su di esso, ad esempio:
Main.java
123456789101112131415161718192021package com.example; class Person { String name; int age; String gender; public Person(String name, int age, String gender) { this.name = name; this.age = age; this.gender = gender; } } public class Main { public static void main(String[] args) { Person bob = new Person("Bob", 20, "male"); int code = bob.hashCode(); System.out.println(code); } }
In questo caso, sorge la domanda: come possiamo ottenere qualcosa di più specifico invece dell'hash code di un oggetto? Per tali situazioni, è possibile sovrascrivere il metodo toString().
Ereditarietà e sovrascrittura dei metodi sono argomenti approfonditi che verranno trattati in un corso separato. Per ora, utilizzeremo la sovrascrittura dei metodi solo per il metodo toString().
Come utilizzare toString()
Per sovrascrivere un metodo, è necessario utilizzare la seguente sintassi:
Main.java
1234@Override public String toString() { // block of code }
Utilizziamo l'annotazione @Override prima di questo metodo. Con questa annotazione, il compilatore riconosce che stiamo sovrascrivendo questo metodo. Successivamente, specifichiamo la sintassi public String toString(), indicando quale metodo esattamente stiamo sovrascrivendo.
Nel corpo di questo metodo, definiamo come il nostro oggetto deve essere rappresentato come stringa. Sovrascriviamo il metodo per la classe Person:
Person.java
12345678910111213141516171819class Person { String name; int age; String gender; public Person(String name, int age, String gender) { this.name = name; this.age = age; this.gender = gender; } @Override public String toString() { return "Class Person;" + System.lineSeparator() + "name = " + name + ";" + System.lineSeparator() + "age = " + age + ";" + System.lineSeparator() + "gender = " + gender + "."; } }
Il comando System.lineSeparator() viene utilizzato per creare una nuova riga.
Abbiamo definito come il nostro oggetto deve apparire concatenando stringhe con i relativi valori. Pertanto, quando proviamo a stampare un oggetto della classe Person, vedremo informazioni dettagliate su ciascun campo.
Visualizziamo un oggetto utilizzando il metodo main e osserviamo il risultato:
Main.java
12345678910111213141516171819202122232425262728package com.example; public class Main { public static void main(String[] args) { Person bob = new Person("Bob", 20, "male"); System.out.println(bob); } } class Person { String name; int age; String gender; public Person(String name, int age, String gender) { this.name = name; this.age = age; this.gender = gender; } @Override public String toString() { return "Class Person;" + System.lineSeparator() + "name = " + name + ";" + System.lineSeparator() + "age = " + age + ";" + System.lineSeparator() + "gender = " + gender + "."; } }
Abbiamo ottenuto informazioni sulla classe a cui appartiene l'oggetto bob e dettagli su tutti i suoi campi.
Pertanto, è possibile sovrascrivere e definire il metodo toString() per visualizzare le informazioni desiderate durante la stampa di un oggetto. Creiamo un altro oggetto di questa classe utilizzando il costruttore per osservare e rafforzare come il metodo toString() trasforma l'oggetto:
Main.java
123456789101112131415161718192021222324252627282930package com.example; public class Main { public static void main(String[] args) { Person bob = new Person("Bob", 20, "male"); System.out.println(bob); Person alice = new Person("Alice", 17, "female"); System.out.println(alice); } } class Person { String name; int age; String gender; public Person(String name, int age, String gender) { this.name = name; this.age = age; this.gender = gender; } @Override public String toString() { return "Class Person;" + System.lineSeparator() + "name = " + name + ";" + System.lineSeparator() + "age = " + age + ";" + System.lineSeparator() + "gender = " + gender + "." + System.lineSeparator(); } }
Possiamo osservare che il nuovo oggetto alice viene visualizzato nella console utilizzando lo stesso modello.
Conclusione
Utilizzando il metodo toString(), abbiamo notevolmente semplificato il processo di visualizzazione delle informazioni sugli oggetti a schermo, permettendoci di risparmiare spazio nel metodo main.
1. Perché abbiamo bisogno del metodo toString()?
2. Quale annotazione dovrebbe essere utilizzata sopra il metodo toString()?
Grazie per i tuoi commenti!
Chieda ad AI
Chieda ad AI
Chieda pure quello che desidera o provi una delle domande suggerite per iniziare la nostra conversazione
Awesome!
Completion rate improved to 2.63
Metodo ToString()
Scorri per mostrare il menu
Come stampare facilmente un oggetto
Per visualizzare tutti i dati di un oggetto utilizzando il comando System.out.println(object); in Java, esiste un metodo chiamato toString();.
toString()
Il metodo toString in Java è un metodo integrato che appartiene alla classe Object. Viene utilizzato per restituire una rappresentazione testuale di un oggetto. Per impostazione predefinita, quando chiamiamo toString su un oggetto, restituisce una stringa che contiene il nome della classe seguito dall'hashcode dell'oggetto.
Vediamo l'esempio:
Main.java
1234567891011121314151617181920package com.example; class Person { String name; int age; String gender; public Person(String name, int age, String gender) { this.name = name; this.age = age; this.gender = gender; } } public class Main { public static void main(String[] args) { Person bob = new Person("Bob", 20, "male"); System.out.println(bob); } }
HashCode
Un hashcode, in termini semplici, è un identificatore univoco per un oggetto che viene memorizzato in memoria. Possiamo anche visualizzare il codice hash di un oggetto chiamando il metodo hashCode() su di esso, ad esempio:
Main.java
123456789101112131415161718192021package com.example; class Person { String name; int age; String gender; public Person(String name, int age, String gender) { this.name = name; this.age = age; this.gender = gender; } } public class Main { public static void main(String[] args) { Person bob = new Person("Bob", 20, "male"); int code = bob.hashCode(); System.out.println(code); } }
In questo caso, sorge la domanda: come possiamo ottenere qualcosa di più specifico invece dell'hash code di un oggetto? Per tali situazioni, è possibile sovrascrivere il metodo toString().
Ereditarietà e sovrascrittura dei metodi sono argomenti approfonditi che verranno trattati in un corso separato. Per ora, utilizzeremo la sovrascrittura dei metodi solo per il metodo toString().
Come utilizzare toString()
Per sovrascrivere un metodo, è necessario utilizzare la seguente sintassi:
Main.java
1234@Override public String toString() { // block of code }
Utilizziamo l'annotazione @Override prima di questo metodo. Con questa annotazione, il compilatore riconosce che stiamo sovrascrivendo questo metodo. Successivamente, specifichiamo la sintassi public String toString(), indicando quale metodo esattamente stiamo sovrascrivendo.
Nel corpo di questo metodo, definiamo come il nostro oggetto deve essere rappresentato come stringa. Sovrascriviamo il metodo per la classe Person:
Person.java
12345678910111213141516171819class Person { String name; int age; String gender; public Person(String name, int age, String gender) { this.name = name; this.age = age; this.gender = gender; } @Override public String toString() { return "Class Person;" + System.lineSeparator() + "name = " + name + ";" + System.lineSeparator() + "age = " + age + ";" + System.lineSeparator() + "gender = " + gender + "."; } }
Il comando System.lineSeparator() viene utilizzato per creare una nuova riga.
Abbiamo definito come il nostro oggetto deve apparire concatenando stringhe con i relativi valori. Pertanto, quando proviamo a stampare un oggetto della classe Person, vedremo informazioni dettagliate su ciascun campo.
Visualizziamo un oggetto utilizzando il metodo main e osserviamo il risultato:
Main.java
12345678910111213141516171819202122232425262728package com.example; public class Main { public static void main(String[] args) { Person bob = new Person("Bob", 20, "male"); System.out.println(bob); } } class Person { String name; int age; String gender; public Person(String name, int age, String gender) { this.name = name; this.age = age; this.gender = gender; } @Override public String toString() { return "Class Person;" + System.lineSeparator() + "name = " + name + ";" + System.lineSeparator() + "age = " + age + ";" + System.lineSeparator() + "gender = " + gender + "."; } }
Abbiamo ottenuto informazioni sulla classe a cui appartiene l'oggetto bob e dettagli su tutti i suoi campi.
Pertanto, è possibile sovrascrivere e definire il metodo toString() per visualizzare le informazioni desiderate durante la stampa di un oggetto. Creiamo un altro oggetto di questa classe utilizzando il costruttore per osservare e rafforzare come il metodo toString() trasforma l'oggetto:
Main.java
123456789101112131415161718192021222324252627282930package com.example; public class Main { public static void main(String[] args) { Person bob = new Person("Bob", 20, "male"); System.out.println(bob); Person alice = new Person("Alice", 17, "female"); System.out.println(alice); } } class Person { String name; int age; String gender; public Person(String name, int age, String gender) { this.name = name; this.age = age; this.gender = gender; } @Override public String toString() { return "Class Person;" + System.lineSeparator() + "name = " + name + ";" + System.lineSeparator() + "age = " + age + ";" + System.lineSeparator() + "gender = " + gender + "." + System.lineSeparator(); } }
Possiamo osservare che il nuovo oggetto alice viene visualizzato nella console utilizzando lo stesso modello.
Conclusione
Utilizzando il metodo toString(), abbiamo notevolmente semplificato il processo di visualizzazione delle informazioni sugli oggetti a schermo, permettendoci di risparmiare spazio nel metodo main.
1. Perché abbiamo bisogno del metodo toString()?
2. Quale annotazione dovrebbe essere utilizzata sopra il metodo toString()?
Grazie per i tuoi commenti!