Ce face Object.toString
Când scrii System.out.println(obiect) sau "Text: " + obiect, Java apelează toString() pe obiect. Implementarea din Object returnează numele clasei, @ și codul hash în hexazecimal, de exemplu Main$Elev@1b6d3586: corect, dar puțin util, iar partea de după @ diferă la fiecare rulare.
Suprascrie toString() în clasele tale ca să returneze ceva lizibil. Este de mare ajutor la depanare și în mesajele de eroare. Records, colecțiile (List, Map) și clasele ca LocalDate au deja un toString util.
Ce returnează
Un String care descrie obiectul.
Exemple
Exemplul 1: toString implicit
Nu afișăm valoarea direct (diferă la fiecare rulare), ci verificăm din ce este formată.
public class Main {
static class Elev {
String nume = "Ana";
}
public static void main(String[] args) {
Elev e = new Elev();
String text = e.toString();
System.out.println(text.startsWith("Main$Elev@"));
System.out.println(text.equals(e.getClass().getName() + "@" + Integer.toHexString(e.hashCode())));
}
}
Rezultat
true
true
Exemplul 2: toString suprascris
import java.util.List;
public class Main {
static class Elev {
final String nume;
final double medie;
Elev(String nume, double medie) {
this.nume = nume;
this.medie = medie;
}
@Override
public String toString() {
return nume + " (media " + medie + ")";
}
}
public static void main(String[] args) {
Elev e = new Elev("Ana", 9.5);
System.out.println(e);
System.out.println("Premiantă: " + e);
System.out.println(List.of(e, new Elev("Ion", 8.75)));
}
}
Rezultat
Ana (media 9.5)
Premiantă: Ana (media 9.5)
[Ana (media 9.5), Ion (media 8.75)]
Exemplul 3: Clase care au deja toString
import java.time.LocalDate;
import java.util.Map;
public class Main {
record Adresa(String strada, String oras) {}
public static void main(String[] args) {
System.out.println(new Adresa("Lăpușneanu 5", "Iași"));
System.out.println(LocalDate.of(2026, 12, 1));
System.out.println(Map.of("Ana", 10));
}
}
Rezultat
Adresa[strada=Lăpușneanu 5, oras=Iași]
2026-12-01
{Ana=10}
Greșeli frecvente
- Afișezi un array cu
println(array)și primești ceva ca[I@6d06d69c: array-urile nu suprascriutoString. FoloseșteArrays.toString(array). - Pui în
toStringdate sensibile (parole, CNP-uri): textul ajunge ușor în loguri.
Comenzi înrudite
Objects.toString: Transformă un obiect în text fără să arunce excepție pentru null: dă „null” sau textul ales de tine.Object: Clasa de bază a tuturor claselor Java; getClass() spune din ce clasă face parte un obiect la rulare.Object.equals: equals() spune dacă două obiecte sunt „egale”, iar hashCode() dă un număr folosit de HashMap și HashSet; se suprascriu împreună.String.valueOf: Transformă orice valoare (număr, boolean, char, obiect, char[]) în String; copyValueOf face un șir dintr-un char[].