JavaRush /Blog Java /Random-PL /10 wskazówek dotyczących zastępowania metody toString() w...
Ku6ep
Poziom 35

10 wskazówek dotyczących zastępowania metody toString() w Javie (część 2)

Opublikowano w grupie Random-PL

toString przykłady w Javie

Użyjemy poniższej klasy, aby zademonstrować nasz przykład toString dla Netbeans, Eclipse i narzędzia ToStringBuilder Apache.

/** * Java программа, демонстрирующая Jak переопределить метод toString() в Java. * Эта Java программа показывает Jak вы можете использовать IDE типа Netbeans Lub Eclipse * и открытую библиотеку типа Apache commons ToStringBuilder для * переопределения toString в Java. * @author Javarevisited.blogspot.com */ public class Country { private String name; private String capital; private long population; private Date independenceDay; public Country(String name){ this.name = name; } public String getName(){ return name; } public void setName(String name) {this.name = name;} public String getCapital() {return capital;} public void setCapital(String capital) {this.capital = capital;} public Date getIndependenceDay() {return independenceDay;} public void setIndependenceDay(Date independenceDay) {this.independenceDay = independenceDay;} public long getPopulation() { return population; } public void setPopulation(long population) {this.population = population; } @Override public String toString() { return "Country{" + "capital=" + capital + ", population=" + population + ", independenceDay=" + independenceDay + '}'; } public void setIndependenceDay(String date) { DateFormat format = new SimpleDateFormat("dd/MM/yyyy"); try { this.independenceDay = format.parse(date); } catch (ParseException ex) { Logger.getLogger(Country.class.getName()).log(Level.SEVERE, null, ex); } } public static void main(String args[]) { Country India = new Country("India"); India.setCapital("New Delhi"); India.setIndependenceDay("15/07/1947"); India.setPopulation(1200000000); System.out.println(India); } }

Metoda toString stworzona przez Netbeans IDE


Metoda toString wygenerowana przez Netbeans IDE generuje następujące dane wyjściowe dla klasy zdefiniowanej powyżej:

Country{capital=New Delhi, population=1200000000, independenceDay=Fri Aug 15 00:00:00 VET 1947}

Jeśli spojrzysz na powyższe dane wyjściowe, zobaczysz, że Netbeans nie tworzy dla Ciebie sformatowanej daty: zamiast tego wywołuje metodę toString() klasy java.util.Date

Metoda toString() utworzona przez środowisko IDE Rclise


Domyślnie Eclipse tworzy następującą metodę toString:

@Override public String toString() { return "Country [name=" + name + ", capital=" + capital + ", population=" + population + ", independenceDay=" + independenceDay + "]"; }

Możesz wygenerować kod dla metody toString w Eclipse, klikając Źródło -> Generuj toString(). Zapewnia także kilka możliwości, takich jak wybór stylu kodu, czyli użycie operandu konkatenacji lub StringBuilder i tak dalej. Poniżej znajduje się wynik metody toString(), którą właśnie utworzyliśmy w Eclipse:

Country [name=India, capital=New Delhi, population=1200000000, independenceDay=Tue Jul 15 00:00:00 VET 1947]

Użycie ToStringBuilder do zastąpienia metody toString() języka Java

Oprócz wielu przydatnych klas, takich jak PropertyUtils , EqualsBuilder lub HashCodeBuilder, Apache udostępnia także ToStringBuilder, który może generować kod w celu wyprowadzenia metody toString() w kilku różnych stylach. Zobaczmy, jak wygląda wynik metody toString w prostym i wielowierszowym stylu: Prosty styl:

India,New Delhi,1200000000,Fri Aug 15 00:00:00 VET 1947

Styl wieloliniowy:

test.Country@f0eed6[
 name=India
 capital=New Delhi
 population=1200000000
 independenceDay=Fri Aug 15 00:00:00 VET 1947
 ]

NO_FIELD_NAMES_STYLE (styl bez nazw pól)

test.Country@1d05c81[India,New Delhi,1200000000,Fri Aug 15 00:00:00 VET 1947]

SHORT_PREFIX_STYLE (styl krótkiego przedrostka)

Country[name=India,capital=New Delhi,population=1200000000,independenceDay=Fri Aug 15 00:00:00 VET 1947]

ToStringStyle.DEFAULT_STYLE (styl domyślny)

test.Country@1d05c81[name=India,capital=New Delhi,population=1200000000,independenceDay=Fri Aug 15 00:00:00 VET 1947]

Podobna biblioteka open source firmy Google, Guava , udostępnia również wygodne API do generowania kodu dla metody toString w Javie.

Kiedy w Javie wywoływana jest metoda toString

toString jest dość specyficzną metodą i jest wywoływany z wielu metod JavaAPI, takich jak println(), printf() , rejestrowanie, instrukcje potwierdzania , debugery IDE, podczas drukowania kolekcji i podczas łączenia. Jeśli podklasa nie przesłania metody toString(), wówczas wywoływana jest domyślna implementacja zdefiniowana w klasie Object. Wielu programistów używa interfejsów API rejestrowania, takich jak Log4J lub java.util.Logger do generowania dzienników i często pomija tutaj obiekt.

logger.info("Customer not found:" + customer)

i jeśli Klient nie zastąpi toString i nie wyśle ​​ważnych informacji, takich jak identyfikator klienta, nazwa klienta itp. wtedy będzie dość trudno zdiagnozować problem. Dlatego zawsze warto zastąpić toString w Javie. Przyjrzyjmy się niektórym korzyściom, jakie przyniesie takie rozwiązanie.

Korzyści z zastąpienia metody toString

  1. Jak omówiono powyżej, prawidłowo zastąpiony toString pomaga w debugowaniu , drukując ważne informacje.
  2. Jeśli w kolekcji przechowywany jest ważny obiekt, wydrukowanie kolekcji wywoła metodę toString przechowywanego obiektu, która może wydrukować ważne informacje. Klasycznym przykładem nieprzesłoniętej metody toString jest Array w Javie, która zamiast zawartości tablicy wypisuje wynik domyślnej implementacji. Chociaż istnieje kilka sposobów wydrukowania zawartości tablicy za pomocą Arrays.toString() i tym podobnych; ale ponieważ Array jest obiektem Java, byłoby znacznie lepiej, gdyby wiedział, jak się wydrukować, podobnie jak klasy kolekcji, takie jak List lub Set .

To tylko niektóre z korzyści, jakie uzyskasz wdrażając lub zastępując metodę toString w Javie . Jest o wiele więcej korzyści, które uzyskasz i nauczysz się sam. Mam nadzieję, że te wskazówki pomogą Ci w pełni wykorzystać implementacje toString. Daj nam znać, jeśli znasz jakieś unikalne sposoby pracy z toString, które pomogą Ci w aplikacjach Java.

Komentarze
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION