Klasa obiektu ma metodę o nazwie toString (). Ta metoda zwraca reprezentację ciągu klasy normalnej klasy. Wszystkie klasy dziedziczą tę metodę od obiektu klasy. Każda tablica (jako obiekt) ma podobną metodę.
Niestety, ta przedstawienie obiektu jest krótkim kodem tekstowym (krótki tekst literalny). Nie jest to bardzo przydatne, choć można go dekodować. Takie dekodowanie nie jest adresowane w tym artykule. I tak programista musi zastąpić tę metodę, aby mieć reprezentację obiektu; Użytkownik komputera to doceni. Nadrzędne jest rozwiązane w tym artykule.
Domyślne zachowanie metody ToString ()
Prymitywne typy
Prymitywne typy, takie jak int, istnieją same w sobie. Jednak każdy pierwotny typ w Javie ma odpowiednią klasę (opakowanie). Jeśli chodzi o przekształcanie prymitywnych obiektów na struny, należy użyć odpowiednich klas. Poniższy program ilustruje to dla INT. Odpowiednia klasa dla INT to klasa liczb całkowitych.
Klasa publiczna THEClassWyjście to 5. Gdyby „liczba całkowita” została wpisana jako int, wówczas komunikat o błędzie byłby wydany w czasie kompilacji. Zastosowano tutaj metodę TOSTRING () największej klasy przodków, bez żadnego problemu. To znaczy liczba całkowita 5 została przekonwertowana na ciąg i wydrukowano bez żadnego problemu. Gdyby jednak klasa była klasą zdefiniowaną przez programistę lub innym rodzajem predefiniowanej klasy, to byłby jakiś problem.
Klasa zdefiniowana przez programistę
Rozważ następujący program, który drukuje reprezentację zdefiniowanego przez programistę obiektu, OBJ:
klasa AclassWyjście to:
Aclass@6ff3c5b5To jest krótki kodowany tekst - niezbyt przydatny dla użytkownika. Użytkownik mógł preferować coś w stylu:
prop1 => 1;Są to różne właściwości (pola) i ich wartości. To, co oddziela właściwość od jej wartości w wydruku, to „=>”, co powinno zostać wprowadzone przez programistę. W takim pytaniu metody zwykle nie są drukowane.
Szyk
Rozważ następujący program, w którym tablica jako obiekt, ARR, należy wydrukować:
Klasa publiczna THEClassWyjście jest,
[Ljava.Lang.Ciąg;@D716361który jest kolejnym kodem tekstowym. Czy tego chciałeś? Chciałbyś zobaczyć coś takiego:
raz Dwa Trzygdzie separator elementu jest „”,.
Lista
Rozważ następujący program, w którym należy wydrukować tablicę jako obiekt AL:
Importuj Java.Util.*;Wyjście to:
[raz Dwa Trzy]Wyjście jest całkiem dobre! Oznacza to, że programista nie musi zastępować obiektu.Metoda toString (), gdy dotyczy tablicy (lub ogólnie możliwej listy). Jednak jeśli chodzi o obiekty zdefiniowane przez programistę lub tablicę, programista musi zastąpić metodę.
Mapa
Rozważ następujący program, w którym Hashmap jako obiekt, HM, należy wydrukować:
Importuj Java.Util.*;Wyjście to:
One = 1, dwa = 2, trzy = 3Wyjście jest całkiem dobre! Pary klucza/wartości są rozróżnialne, z separatorem elementu, jest „”, ”. Oznacza to, że programista nie musi zastępować obiektu.Metoda toString (), gdy dotyczy ona hashmap (lub ogólnie możliwej mapy). Jednak jeśli chodzi o obiekty zdefiniowane przez programistę lub tablicę, programista musi zastąpić metodę.
Reszta tego artykułu dotyczy nadrzędnego obiektu.toString () odziedziczona metoda obiektu zdefiniowanego przez programistę i tablicy.
Zastępowanie toString ()
Szyk
Z tablicą dzisiaj nadrzędne jest pośrednio lub obejście. Java ma klasę o nazwie tablice. Ta klasa ma metodę toString, już zastąpioną przez Java. W klasie metoda toString () jest statyczna: oznacza to, że klasa tablic nie musi być utworzona, aby zastosować metodę toString (). Tutaj metoda toString () przyjmuje argument, który jest identyfikatorem tablicy. Wytwarza wyjście, w którym separator jest „”,. Tablice klasowe, jest w Javie.Util.* pakiet. Poniższy program pokazuje obejście tablic:
Importuj Java.Util.*;Wyjście to:
[10.1, 20.2, 30.3]Wyjście jest całkiem dobre! I tak, dziś programista nie musi już kodować metody nadrzędnej, dla metody toString () dla tablicy Java. Programista wykonuje obejście z tablicami i jego toString ().
Obiekt zdefiniowany przez programistę
Z klasą zdefiniowaną programistą, metodą TOSTRING () klasy obiektowej, musi zostać po prostu na nowo zdefiniowana, jak pokazano w następującej klasie zdefiniowanej programisty:
klasa AclassTechnika polega na użyciu operatora konatenacji strun, + do łączenia literałów bez strasowania z literałami smyczkowymi. Poprzedni „@Override” zapobiega pewnym błędom w metodzie zastąpionej. Redefinicja tutaj jest nadrzędna. Klasa zdefiniowana przez programista odpowiada obiektowi zdefiniowanemu przez programistę. Poniższa metoda Java main () jest odpowiednia dla powyższej klasy:
Klasa publiczna THEClassWyjście to:
prop1 => 1To wyjście jest lepiej doceniane przez użytkownika niż krótki kod tekstowy „ACLASS@6FF3C5B5”. Nie zapominaj, że nadrzędna definicja odbywa się w klasie zainteresowania.
Wniosek
Klasa obiektu ma metodę o nazwie toString (). Ta metoda zwraca reprezentację ciągu klasy klasy. Wszystkie klasy dziedziczą tę metodę od obiektu klasy. Każda tablica (jako obiekt) ma podobną metodę. Każda klasa wymaga zastąpienia tej metody, pośrednio lub bezpośrednio.
Z prymitywnymi typami użyj typów referencyjnych (e.G., Liczba całkowita dla INT), gdzie Java ma już predefiniowaną zastąpioną metodę toString (), co jest zadowalające. Z listami i mapami, Java ma już z góry określoną metodę toString (), która jest zadowalająca. Za pomocą tablicy zrób obejście: Użyj metody TOSTRING () Klasy tablic. Z klasą zdefiniowaną przez programistę, wykonaj rzeczywiste nadrzędne, za pomocą operatora konatenacji ciągów, +, tak często, jak to możliwe.