JavaRush /Java Blog /Random-TL /10 Mga Tip para sa Pag-override sa Paraang toString() sa ...
Ku6ep
Antas

10 Mga Tip para sa Pag-override sa Paraang toString() sa Java (Bahagi 2)

Nai-publish sa grupo

toString mga halimbawa sa Java

Gagamitin namin ang sumusunod na klase upang ipakita ang aming halimbawa ng toString para sa Netbeans, Eclipse at ToStringBuilder utility ng Apache.

/** * Java программа, демонстрирующая How переопределить метод toString() в Java. * Эта Java программа показывает How вы можете использовать IDE типа Netbeans or 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); } }

Ang paraan ng toString na nilikha ng Netbeans IDE


Ang toString method na nabuo ng Netbeans IDE ay gumagawa ng sumusunod na output para sa klase na tinukoy sa itaas:

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

Kung titingnan mo ang output sa itaas, makikita mo na ang Netbeans ay hindi gumagawa ng naka-format na petsa para sa iyo: sa halip, ito ay tumatawag sa toString() na paraan ng java.util.Date class

Ang toString() na paraan na nilikha ng Rclise IDE


Bilang default, nililikha ng Eclipse ang sumusunod na paraan ng toString:

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

Maaari kang bumuo ng code para sa toString method sa Eclipse sa pamamagitan ng pag-click sa Source -> Generate toString(). Nagbibigay din ito ng ilang mga posibilidad, tulad ng pagpili ng istilo ng code, iyon ay, gamit ang concatenation operand o StringBuilder at iba pa. Nasa ibaba ang output ng toString() na pamamaraan na nilikha namin sa Eclipse:

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

Paggamit ng ToStringBuilder upang I-override ang Paraan ng toString() ng Java

Kasama ng maraming kapaki-pakinabang na klase tulad ng PropertyUtils , EqualsBuilder o HashCodeBuilder, nagbibigay din ang Apache ng ToStringBuilder na maaaring makabuo ng code upang i-output ang toString() na paraan sa ilang iba't ibang estilo. Tingnan natin kung ano ang hitsura ng output ng toString method sa simple at multi-line na istilo: Simpleng istilo:

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

Multi-line na istilo:

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

NO_FIELD_NAMES_STYLE (estilo na walang mga pangalan ng field)

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

SHORT_PREFIX_STYLE (estilo ng maikling prefix)

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

ToStringStyle.DEFAULT_STYLE (default na istilo)

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

Isang katulad na open source na library mula sa Google, ang Guava ay nagbibigay din ng maginhawang API para sa pagbuo ng code para sa toString method sa Java.

Kapag ang toString method ay tinawag sa Java

Ang toString ay isang medyo tiyak na pamamaraan at tinatawag mula sa maraming mga pamamaraan ng JavaAPI tulad ng println(), printf() , pag-log, assert statements , IDE debuggers, kapag nagpi-print ng mga koleksyon, at kapag pinagsama-sama. Kung ang isang subclass ay hindi na-override ang toString(), kung gayon ang default na pagpapatupad na tinukoy sa klase ng Object ay tinatawag. Maraming mga developer ang gumagamit ng mga logging API tulad ng Log4J o java.util.Logger upang mag-output ng mga log at kadalasang nakakaligtaan ang Object dito.

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

at kung hindi na-override ng Customer angString at naglalabas ng mahalagang impormasyon tulad ng customerId, customerName, atbp. pagkatapos ay medyo mahirap i-diagnose ang problema. Ito ang dahilan kung bakit palaging sulit na i-override ang toString sa Java. Tingnan natin ang ilan sa mga benepisyo kung gagawin natin ito.

Mga benepisyo ng pag-override sa paraan ng toString

  1. Tulad ng tinalakay sa itaas, ang isang maayos na na-override na toString ay nakakatulong sa pag-debug sa pamamagitan ng pag-print ng mahalagang impormasyon.
  2. Kung ang isang mahalagang bagay ay nakaimbak sa isang koleksyon, pagkatapos ay ang pag-print ng koleksyon ay tatawag sa toString na paraan ng nakaimbak na bagay, na maaaring mag-print ng mahalagang impormasyon. Isang klasikong halimbawa ng isang hindi na-override na paraan ng toString ay Array sa Java, na nagpi-print ng resulta ng default na pagpapatupad sa halip na ang mga nilalaman ng array. Bagama't mayroong ilang mga paraan upang i-print ang mga nilalaman ng isang array gamit ang Arrays.toString() at mga katulad nito; ngunit dahil ang Array ay isang Java object, mas mabuti kung alam nito kung paano i-print ang sarili nito, tulad ng mga klase ng koleksyon tulad ng List o Set .

Ilan lang ito sa mga benepisyong makukuha mo sa pamamagitan ng pagpapatupad o pag-override sa toString method sa Java , marami pang benepisyo ang makukuha mo at matutunan mo para sa iyong sarili. Sana ay matulungan ka ng mga tip na ito na masulit ang iyong mga pagpapatupad ng toString. Ipaalam sa amin kung alam mo ang anumang natatanging paraan ng pagtatrabaho sa toString na makakatulong sa iyo sa iyong mga Java application.

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