Paraan ng Java toString
toString
paraan sa Java ay ginagamit upang magbigay ng malinaw at sapat na impormasyon tungkol sa isang bagay ( Object
) sa isang form na nababasa ng tao. Ang wastong paraan ng overriding toString
ay makakatulong sa pag-log at pag-debug ng isang Java program sa pamamagitan ng pagbibigay ng mahalaga at mahalagang impormasyon. Dahil toString()
ito ay tinukoy sa java.lang.Object
isang klase at ang default na pagpapatupad nito ay hindi nagbibigay ng maraming impormasyon, palaging pinakamahusay na kasanayan na i-override ang pamamaraang ito sa isang descendant na klase. Sa katunayan, kung lumilikha ka ng isang mahalaga o pangkalahatang klase ng uri Order
, Trade
o Employee
, palaging i-override ang equals , hashCode , compareTo at toString
mga pamamaraan sa Java. Bilang default, ang pagpapatupad toString
ay gumagawa ng output sa form , package.class@hashCode
halimbawa para sa aming halimbawa ang paraan ng klase ay magpi-print ng pagsubok.Country@18e2b22 kung saan ang 18e2b22 ay ang hash code ng object sa hexadecimal, kung tatawagan mo ang hashCode method ito ay magbabalik ng 260943370 na siyang decimal na katumbas ng 18e2b22. Ang impormasyong ito ay hindi partikular na kapaki-pakinabang kapag naghahanap ng problema. Tingnan natin ang isang halimbawa sa totoong buhay kung saan kailangan mong maghanap ng problema sa iyong koneksyon sa network, kung sakaling gusto mong malaman kung aling host at port ang sinusubukang kumonekta ng iyong system at kung ipi-print o lamang ang default na impormasyon, ito ay imposibleng isipin ang tunay na problema, ngunit sa isang overridden na pagpapatupad maaari silang magbigay ng kapaki-pakinabang na impormasyon tulad ng hostname at numero ng port. Sa Java tutorial na ito, magbibigay kami ng ilang mga tip sa paraan ng pag-override sa mga halimbawa ng code. toString()
toString()
Country
Socket
ServerSocket
toString
toString
toString
Paano i-override ang paraan ng toString sa Java:
Ini-print ang na-format na petsa (ibig sabihin, araw/buwan/taon) sa halip na ang raw na halaga. Ito ay isang napaka-kapaki-pakinabang na pahiwatig kapag na-override ang isang Java methodtoString
. Ang regular toString()
na klase java.util.Date
ay hindi naglalabas ng na-format na petsa at may kasamang maraming detalye na hindi palaging kinakailangan. Kung gumagamit ka ng bahagyang DateFormat i.e. dd-MM-yy sa iyong application, kung gayon ay talagang gusto mong makita ang format na ito sa halip na ang default. Ang IDE ay hindi karaniwang bumubuo ng naka-format na output Date
at ito ay isang bagay na kakailanganin mong gawin sa iyong sarili, ngunit sulit ito. Basahin ang Paano Mag-print ng Petsa sa ddMMyy Format sa Java para sa mga detalye sa pag-format Date
sa Java. Maaari mo ring gamitin ang SimpleDataFormat class o ang Joda Date time library para dito.
Pagdodokumento ng toString format
Kung ang iyong pamamaraantoString()
ay hindi naglalabas ng data bilang field=value, magandang ideya na idokumento ang output format toString
, lalo na para sa mahahalagang bagay tulad ng Employee o Student. Halimbawa, kung ang isang paraan ng toString()
klase Работник(Employee)
ay nag-print ng " John-101-Sales-9846387321 " kung gayon ang isang magandang kasanayan ay ang tukuyin ang format bilang "name-id-department-contact", ngunit sa parehong oras ay huwag payagan ang kliyente na makakuha impormasyon mula sa pamamaraan toString()
, dapat kang palaging magbigay ng naaangkop na mga pamamaraan para sa pagkuha ng data, tulad ng getName()
, getId()
, getContact()
at iba pa, dahil ang impormasyong nakuha mula toString()
sa representasyon ng bagay ay marupok at madaling kapitan ng pagkakamali, kaya ang kliyente ay dapat palaging may malinis na landas upang makuha ang impormasyon.
Gamitin ang StringBuilder upang mabuo ang output ng toString()
Kung nagsusulat ka ng code para sa isang pamamaraantoString()
sa Java, pagkatapos ay gamitin ang StringBuilder upang magdagdag ng mga indibidwal na katangian. Kung ikaw ay gumagamit ng isang IDE tulad ng Eclipse , Netbeans o IntelliJ pagkatapos ay ang paggamit StringBuilder
ng at pamamaraan append()
sa halip na ang + operator upang bumuo toString
ay din ang paraan upang pumunta. Bilang default, parehong bumubuo ang Eclipse at Netbeans toString
gamit ang concatenation operator.
Gamit ang @Override annotation
Ang paggamit@Override
ng paraan ng pag-override sa Java ay isa sa mga pinakamahusay na kasanayan sa wika. Ngunit ang pahiwatig na ito ay hindi kasinghalaga sa kaso ng pag-override sa equals()
at mga pamamaraan compareTo()
, dahil ang overloading sa halip na i-override ay maaaring lumikha ng mas banayad na mga error na mahirap kalkulahin. Sa anumang kaso, mas mainam na gamitin ang anotasyon @Overrride
.
Pagpi-print ng mga nilalaman ng isang array sa halip na pag-print ng array object
Ang array ay isang object sa Java ngunit hindi nito na-override ang isang paraantoString
at kapag nag-print ka ng array ang default na format ng output ay hindi masyadong kapaki-pakinabang dahil gusto naming makita ang mga nilalaman ng array. Sa pamamagitan ng paraan, ito ay isa pang dahilan kung bakit ang char[] array ay mas gusto kaysa String para sa pag-iimbak ng sensitibong data tulad ng isang password. Maglaan ng oras upang tingnan kung ang pag-print ng mga nilalaman ng isang array ay nakakatulong sa iyong mga kliyente o hindi, at kung ito ay makatuwiran, pagkatapos ay i-print ang mga nilalaman ng array sa halip na ang bagay mismo. Para sa mga kadahilanan ng pagganap, mas mainam na gamitin Collection
ang tulad ArrayList
o HashSet sa halip Array
upang mag-imbak ng iba pang mga bagay.
Mga tip sa bonus
Ang ilan pang bonus na tip sa paraan ng pag-overridetoString
sa Java.
-
I-print ang output
toString
sa maraming linya o sa isa batay sa haba nito. -
Isama ang ganap na kwalipikadong mga pangalan ng klase sa representasyon
toString
, sa madaling salitapackage.class
upang maiwasan ang anumang hindi pagkakaunawaan. -
Maaari mong laktawan ang mga null na halaga o ipakita ang mga ito, ngunit mas mahusay na ipakita ang mga ito. Minsan ay kapaki-pakinabang ang mga ito dahil ipinapakita nila kung aling field ang naroroon
null
sa ilang insidente, halimbawa NullPointerException . -
Gumamit ng format ng key-value, halimbawa
member.name=member.value
, sinusuportahan ito ng karamihan sa mga IDE. -
Isama ang mga minanang miyembro kung sa tingin mo ay dapat silang magbigay ng kinakailangang impormasyon sa nagmanang klase.
-
Minsan ang isang bagay ay naglalaman ng maraming opsyonal at kinakailangang mga parameter, tulad ng ipinakita namin sa aming halimbawa ng template ng Tagabuo , kapag halos imposibleng i-print ang lahat ng mga field, sa kasong ito maaari naming i-print lamang ang mga kinakailangang field, lalo na dahil mayroon kaming mga opsyonal.
GO TO FULL VERSION