Jak używać metody toString w Javie?

Czy ktoś może mi wyjaśnić koncepcję metody toString(), zdefiniowanej w klasie Object? Jak jest ona używana i jaki jest jej cel?

Rozwiązanie

Z Object.toString() docs:

Zwraca reprezentację łańcuchową (string) obiektu. Ogólnie rzecz biorąc, metoda toString zwraca ciąg znaków, który "tekstowo reprezentuje" ten obiekt. Wynik powinien być zwięzłą, ale informatywną reprezentacją, która jest łatwa do odczytania przez osobę. It is zalecane, aby wszystkie podklasy nadpisały tę metodę.

Metoda toString dla klasy Object zwraca łańcuch składający się z nazwy klasy, której obiekt jest instancją, znaku at-sign `@', oraz niepodpisanej szesnastkowej reprezentacja kodu skrótu obiektu. obiektu. Innymi słowy, ta metoda zwraca łańcuch równy wartości of:

getClass().getName() + '@' + Integer.toHexString(hashCode())

Przykład:

String[] mystr ={"a","b","c"};
System.out.println("mystr.toString: " + mystr.toString());

output:- mystr.toString: [Ljava.lang.String;@13aaa14a
Komentarze (1)

Może opcjonalnie mieć zastosowanie w kontekście aplikacji, ale znacznie częściej jest używany do celów debugowania. Na przykład, gdy trafisz na punkt przerwania w IDE, o wiele łatwiej jest odczytać sensowny toString() obiektów niż sprawdzić ich członków.

Nie ma ustalonych wymagań co do tego, co powinna robić metoda toString(). Zgodnie z konwencją, najczęściej powie ci ona nazwę klasy i wartość odpowiednich członków danych. Częściej niż nie, metody toString() są automatycznie generowane w IDE.

Poleganie na konkretnym wyjściu z metody toString() lub parsowanie go wewnątrz programu jest złym pomysłem. Cokolwiek zrobisz, nie idź tą drogą.

Komentarze (1)

Poza tym, co cletus odpowiedział w odniesieniu do debugowania, jest on używany zawsze, gdy wyprowadzasz obiekt, jak wtedy, gdy używasz

 System.out.println(myObject);

lub

System.out.println("text " + myObject);
Komentarze (0)