33. Metod toString() u Javi

Ako želimo predstaviti bilo koji objekt kao string, toString() metod je veoma pogodan.
Metod toString() vraća string reprezentaciju objekta.
Ako ispisujemo neki objekt, Java kompajler interno poziva toString() metod za taj objekt. Tako preklapanje toString() metoda, vraća željeni izlaz, to može biti stanje nekog objekta i sl. zavisno od naše implementacije.

Prednosti Java toString() metoda
Preklapanjem toString() metoda Object klase, možemo vratiti vrijednosti objekta, tako da nije potrebno pisati mnogo koda.
Razumijevanje problema bez toString() metoda
Pogledajmo jednostavan kod koji ispisuje referencu.

class Student{  
 int rollno;  
 String name;  
 String city;  
  
 Student(int rollno, String name, String city){  
 this.rollno=rollno;  
 this.name=name;  
 this.city=city;  
 }  
  
 public static void main(String args[]){  
   Student s1=new Student(101,"Petar","Beograd");  
   Student s2=new Student(102,"Marko","Banjaluka");  
     
   System.out.println(s1);  //kompajler ovdje piše s1.toString()  
   System.out.println(s2);  // kompajler ovdje piše s2.toString()  
 }  
}

Ispis na ekranu: 
Student@1fee6fc
Student@1eed786

Kao što se može vidjeti u ovom primjeru, ispis s1 i s2 ispisuje hashcode vrijednosti objekata, a mi želimo da ispisuje vrijednosti ovih objekata. Pošto Java kompajler interno poziva toString() metod, preklapanje ovog metoda će vratiti specificirane vrijednosti. Razmotrimo to u sljedećem primjeru:
Primjer Java toString() metoda
Pogledajmo sada realni primjer toString() metoda.

class Student{  
 int rollno;  
 String name;  
 String city;  
  
 Student(int rollno, String name, String city){  
 this.rollno=rollno;  
 this.name=name;  
 this.city=city;  
 }  
   
 public String toString(){  //preklapanje toString() metoda  
  return rollno+" "+name+" "+city;  
 }  
 public static void main(String args[]){  
   Student s1=new Student(101,"Petar","Beograd");  
   Student s2=new Student(102,"Marko","Banjaluka");  
     
   System.out.println(s1);  //kompajler ovdje piše s1.toString()  
   System.out.println(s2);  // kompajler ovdje piše s2.toString()  
 }  
}

Ispis na ekranu:
101 Petar Beograd
102 Marko Banjaluka

    Objektno orijentisano programiranje u Javi    Index