Metoda toString()

0

Klasa Object ma zaimplementowaną metodę toString(). We własnej klasie metodę tą można nadpisać.
Nie rozumiem na jakiej zasadzie działa to, że nie trzeba jej wywoływać jawnie, na przykład w pniższym kodzie

public class Main{
public static void main(String[] args) {
	
                Osoba os = new Osoba();
	    System.out.println(os);
				
	}
}

class Osoba{
 public String toString(){
		return "Np. nazwa klasy";
	}

}

Wynik działanie tego programu to:
Np. nazwa klasy
Jak to się dzieje, że po podstawieniu do metody println() referencji wywoływana jest metoda toString()?

0

W trakcie kompilacji kodu kompilator zamienia:

System.out.println(os);

na

System.out.println(os.toString());
0

Czy tylko w tym przypadku kompilator działa w taki domyślny sposób?

0

Nie. Od wersji 1.5 można zrobić np.:

Integer i = 0;
int a = 0;
i.toString();
a.toString();

jak widać nagle prymitywny int stał się obiektem Integer. Trochę tego jest :)

1 użytkowników online, w tym zalogowanych: 0, gości: 1