JavaRush /Блоги Java /Random-TG /10 Маслиҳат барои бекор кардани усули toString() дар Java...
Ku6ep
Сатҳи

10 Маслиҳат барои бекор кардани усули toString() дар Java (Қисми 1)

Дар гурӯҳ нашр шудааст
10 Маслиҳат барои бекор кардани усули toString() дар Java - ToStringBuilder Netbeans Eclipse 10 Маслиҳат барои бекор кардани усули toString() дар Java (Қисми 1) - 1

Усули Java toString

toStringусул дар Java барои пешниҳоди иттилооти возеҳ ва кофӣ дар бораи an object ( Object) дар шакли барои одамон хондашаванда истифода мешавад. Бартараф кардани усули дуруст toStringметавонад дар сабт ва ислоҳи барномаи Java тавассути пешниҳоди маълумоти арзишманд ва муҳим кӯмак кунад. Азбаски toString()он дар синф муайян карда шудааст java.lang.Objectва татбиқи пешфарзии он маълумоти зиёд намедиҳад, ҳамеша таҷрибаи беҳтарини бекор кардани ин усул дар синфи насл аст. Дар асл, агар шумо як синфи муҳим ё умумии навъи Order, Tradeё эҷод кунед Employee, ҳамеша баробар , hashCode , compareTo ва toStringусулҳоро дар Java бекор кунед. Бо нобаёнӣ амалисозӣ toStringнатиҷаро дар шакли шакл медиҳад , package.class@hashCodeмасалан, барои мисоли мо усули синф test.Country@18e2b22 -ро чоп мекунад, ки дар он 18e2b22 рамзи хэши an object дар шонздаҳӣ аст, агар шумо усули hashCode -ро даъват кунед, он 260943370-ро бармегардонад, ки он эквиваленти даҳии 18e2b22. Ин маълумот ҳангоми ҷустуҷӯи мушкилот махсусан муфид нест. Биёед мисоли воқеиро бубинем, ки дар он шумо бояд дар пайвасти шабакавии худ мушкилот пайдо кунед, агар шумо мехоҳед бидонед, ки системаи шумо ба кадом ҳост ва порт пайваст шудан мехоҳад ва агар ё танҳо маълумоти пешфарзро чоп кунад , он чунин хоҳад буд. тасаввур кардан ғайриимкон аст, ки мушкилоти воқеиро тасаввур кардан ғайриимкон аст, аммо бо татбиқи бекоршуда онҳо метавонанд маълумоти муфидро ба монанди номи мизбон ва рақами порт пешниҳод кунанд. Дар ин дарси Java мо чанд маслиҳат оид ба барҳам додани усул бо мисолҳои code медиҳем . toString()toString()CountrySocketServerSockettoStringtoStringtoString

Усули toString-ро дар Java чӣ гуна бекор кардан мумкин аст:

Ба ҷои арзиши хом санаи форматшударо (яъне рӯз/моҳ/сол) чоп мекунад. Ин як маслиҳати хеле муфид ҳангоми бекор кардани усули Java аст toString. toString()Синфи муқаррарӣ java.util.Dateсанаи форматшударо намедиҳад ва тафсилоти зиёдеро дар бар мегирад, ки на ҳамеша лозиманд. Агар шумо қисман DateFormat-ро истифода баред , яъне. gg-MM-yy дар аризаи худ, пас шумо бешубҳа мехоҳед ин форматро ба ҷои формати пешфарз бубинед. IDE одатан баромади форматшударо тавлид намекунад Dateва ин корест, ки шумо бояд худатон анҷом диҳед, аммо ин меарзад. Барои гирифтани тафсилот дар бораи форматкунӣ дар Java, чӣ гуна санаро дар формати ddMMyy чоп кардан мумкин аст, хонед Date. Шумо инчунин метавонед синфи SimpleDataFormat ё китобхонаи вақти Joda Date-ро барои ин истифода баред.

Ҳуҷҷатгузории формати toString

Агар усули шумо toString()маълумотро ҳамчун майдон=арзиш набарорад, пас ин фикри хубест, ки формати баромадро ҳуҷҷатгузорӣ кунед toString, махсусан барои an objectҳои муҳим ба монанди Корманд ё Донишҷӯ. Масалан, агар усули toString()синф Работник(Employee)" John-101-Sales-9846387321 " -ро чоп кунад, пас як таҷрибаи хуб ин аст, ки форматро ҳамчун "name-id-department-contact" муайян кунед, аммо дар айни замон ба муштарӣ имкон намедиҳад, ки маълумот аз метод toString(), шумо бояд ҳамеша усулҳои мувофиқро барои дарёфти маълумот пешниҳод кунед, ба монанди getName(), getId(), getContact()ва ғайра, зеро иттилооте, ки аз toString()муаррифии an object ба даст омадааст, осебпазир ва ба хатогиҳо дучор мешавад, аз ин рӯ муштарӣ бояд ҳамеша роҳи тозаи гирифтани маълумот дошта бошад. маълумот.

Истифодаи StringBuilder барои эҷод кардани натиҷаи toString()

Агар шумо барои усул дар Java code менависед toString(), пас StringBuilder-ро барои илова кардани атрибутҳои инфиродӣ истифода баред. Агар шумо IDE-ро ба монанди Eclipse , Netbeans ё IntelliJ истифода баред, пас истифодаи StringBuilderусули ва append()ба ҷои оператори + барои эҷод toStringниз роҳи рафтан аст. Бо нобаёнӣ, ҳам Eclipse ва ҳам Netbeans toStringбо оператори пайвастшавӣ тавлид мекунанд.

Истифодаи шарҳи @Override

Истифодаи @Overrideбартарии усули дар Java яке аз беҳтарин таҷрибаҳои забон аст. Аммо ин маслиҳат он қадар муҳим нест, ки дар сурати аз байн рафтани усулҳо equals()ва усулҳо муҳим аст compareTo(), зеро изофаборӣ ба ҷои бекоркунӣ метавонад хатогиҳои нозуктареро эҷод кунад, ки ҳисоб кардан душвор аст. Дар ҳар сурат, беҳтар аст, ки эзоҳро истифода баред @Overrride.

Чоп кардани мундариҷаи массив ба ҷои чопи an objectи массив

Массив an object дар Java аст, аммо он усулро бекор намекунад toStringва вақте ки шумо массивро чоп мекунед, формати баромади пешфарз чандон муфид нест, зеро мо мехоҳем мундариҷаи массивро бубинем. Дар омади гап, ин сабаби дигаре аст , ки чаро массиви char[] барои нигоҳ доштани маълумоти ҳассос ба монанди парол бартарӣ дорад . Вақт ҷудо кунед, то бубинед, ки чопи мундариҷаи массив ба мизоҷони шумо кӯмак мекунад ё не ва агар ин маъно дошта бошад, ба ҷои худи an object мундариҷаи массивро чоп кунед. Бо сабабҳои иҷроиш, ба ҷои нигоҳ доштани an objectҳои дигар истифода бурдани Collectionчунин ArrayListё HashSet афзалтар аст .Array

Маслиҳатҳои бонус

Якчанд маслиҳатҳои бонусӣ оид ба бартарияти усул toStringдар Java.
  1. Баромадро toStringдар чанд сатр ё дар як дар асоси дарозии он чоп кунед.

  2. Ба намояндагӣ номҳои синфи пурраи тахассусиро дохил кунед toString, ба ибораи дигар, package.classбарои пешгирӣ кардани ҳар гуна нофаҳмӣ.

  3. Шумо метавонед арзишҳои нулро гузаред ё онҳоро нишон диҳед, аммо беҳтар аст, ки онҳоро нишон диҳед. Баъзан онҳо муфиданд, зеро онҳо нишон медиҳанд, ки кадом майдон nullдар вақти ҳодиса мавҷуд аст, масалан NullPointerException .

  4. Формати калид-арзишро истифода баред, масалан member.name=member.value, аксари IDE-ҳо инро дастгирӣ мекунанд.

  5. Агар шумо фикр кунед, ки онҳо бояд ба синфи меросгир маълумоти заруриро пешниҳод кунанд, аъзоёни меросиро дохил кунед.

  6. Баъзан an object дорои параметрҳои зиёди ихтиёрӣ ва ҳатмӣ мебошад, тавре ки мо дар мисоли Шаблон Созандаи худ нишон додем , вақте ки чопи ҳамаи майдонҳо қариб ғайриимкон аст, дар ин ҳолат мо метавонем танҳо майдонҳои заруриро чоп кунем, хусусан азбаски мо майдонҳои ихтиёрӣ дорем.

Шарҳҳо
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION