JavaRush /Java blogi /Random-UZ /Java'da toString() usulini bekor qilish bo'yicha 10 ta ma...
Ku6ep
Daraja

Java'da toString() usulini bekor qilish bo'yicha 10 ta maslahat (1-qism)

Guruhda nashr etilgan
Java-da toString() usulini bekor qilish uchun 10 ta maslahat - ToStringBuilder Netbeans Eclipse Java'da toString() usulini bekor qilish bo'yicha 10 ta maslahat (1-qism) - 1

Java toString usuli

toStringObjectJava tilidagi usul ob'ekt ( ) haqida odam o'qiy oladigan shaklda aniq va etarli ma'lumot berish uchun ishlatiladi . To'g'ri usulni bekor qilish qimmatli va muhim ma'lumotlarni taqdim etish orqali Java dasturini jurnalga yozish va disk raskadrovka qilishdatoString yordam beradi . U sinfda aniqlanganligi va uning standart amalga oshirilishi ko'p ma'lumot bermaganligi sababli , bu usulni avlod sinfida bekor qilish har doim eng yaxshi amaliyotdir. Haqiqatan ham, agar siz muhim yoki umumiy turdagi klassni yaratayotgan bo'lsangiz yoki Java'da har doim teng , hashCode , compareTo va usullarni bekor qiling . Odatiy bo'lib, amalga oshirish shaklida chiqish hosil qiladi , masalan, bizning misolimiz uchun sinf usuli test.Country@18e2b22 ni chop etadi, bu erda 18e2b22 - ob'ektning hexadecimal kodidir, agar siz hashCode usulini chaqirsangiz, u 260943370 raqamini qaytaradi. 18e2b22 ning kasr ekvivalenti. Muammoni qidirishda bu ma'lumot ayniqsa foydali emas. Keling, haqiqiy hayot misolini ko'rib chiqaylik, unda siz tarmoqqa ulanishda muammoni topishingiz kerak bo'lsa, agar siz tizimingiz qaysi xost va portga ulanishga harakat qilayotganini bilmoqchi bo'lsangiz va agar standart ma'lumotni chop etsa , u shunday bo'ladi. haqiqiy muammoni tasavvur qilishning iloji yo'q, lekin bekor qilingan amalga oshirish bilan ular xost nomi va port raqami kabi foydali ma'lumotlarni taqdim etishi mumkin. Ushbu Java qo'llanmasida biz kod misollari bilan usulni bekor qilish bo'yicha ba'zi maslahatlar beramiz .toString()java.lang.ObjectOrderTradeEmployeetoStringtoStringpackage.class@hashCodetoString()toString()CountrySocketServerSockettoStringtoStringtoString

Java'da toString usulini qanday bekor qilish mumkin:

Xom qiymat o'rniga formatlangan sanani (masalan, kun/oy/yil) chop etadi. Bu Java usulini bekor qilishda juda foydali maslahat toString. Oddiy toString()sinf java.util.Dateformatlangan sanani chiqarmaydi va har doim ham kerak bo'lmaydigan ko'plab tafsilotlarni o'z ichiga oladi. Agar siz qisman DateFormat dan foydalansangiz, ya'ni. Agar ilovangizda dd-MM-yy bo'lsa, unda siz standart o'rniga ushbu formatni ko'rishni xohlaysiz. IDE odatda formatlangan chiqishni yaratmaydi Dateva buni o'zingiz qilishingiz kerak bo'ladi, lekin bunga arziydi. Java-da formatlash haqida batafsil ma'lumot uchun Java-da ddMMyy formatida sanani qanday chop etish haqida o'qing Date. Buning uchun SimpleDataFormat sinfidan yoki Joda Date vaqt kutubxonasidan ham foydalanishingiz mumkin .

toString formatini hujjatlashtirish

Agar sizning usulingiz toString()ma'lumotlarni maydon=qiymat sifatida chiqarmasa, chiqish formatini hujjatlash yaxshi fikr bo'ladi toString, ayniqsa Xodim yoki Talaba kabi muhim ob'ektlar uchun. Misol uchun, agar toString()sinf usuli Работник(Employee)" John-101-Sales-9846387321 " ni chop etsa, formatni "ism-identifikator-bo'lim-kontakt" sifatida belgilash yaxshi amaliyot bo'ladi, lekin ayni paytda mijozga olishiga ruxsat bermang. usuldan ma'lumot olish uchun toString()siz har doim ma'lumotlarni olish uchun mos usullarni taqdim etishingiz kerak, masalan getName(), getId(), getContact()va hokazo, chunki toString()ob'ekt tasviridan olingan ma'lumotlar zaif va xatolikka moyil bo'lib, mijoz har doim ma'lumot olish uchun toza yo'lga ega bo'lishi kerak.

toString() ning chiqishini yaratish uchun StringBuilder dan foydalaning.

Agar siz Java-da usul uchun kod yozayotgan bo'lsangiz , individual atributlarni qo'shish uchun StringBuilder-toString() dan foydalaning . Agar siz Eclipse , Netbeans yoki IntelliJ kabi IDE dan foydalanayotgan bo'lsangiz , yozish uchun + operatori o'rniga and usulidan foydalanish ham yo'ldir. Odatiy bo'lib, Eclipse ham, Netbeans ham birlashtiruvchi operator yordamida hosil qiladi. StringBuilderappend()toStringtoString

@Override izohidan foydalanish

Java-da usulni bekor qilishdan foydalanish @Overridetildagi eng yaxshi amaliyotlardan biridir. equals()Ammo bu maslahat va usullarini bekor qilishda bo'lgani kabi muhim emas compareTo(), chunki bekor qilish o'rniga ortiqcha yuklash hisoblash qiyin bo'lgan nozikroq xatolarni keltirib chiqarishi mumkin. Qanday bo'lmasin, izohni ishlatish yaxshiroqdir @Overrride.

Massiv obyektini chop etish o‘rniga massiv tarkibini chop etish

Massiv Java-dagi ob'ektdir, lekin u usulni bekor qilmaydi toStringva siz massivni chop qilganingizda standart chiqish formati unchalik foydali emas, chunki biz massiv tarkibini ko'rishni xohlaymiz. Aytgancha, bu parol kabi nozik ma'lumotlarni saqlash uchun char[] massivi Stringdan afzalroq bo'lishining yana bir sababi. Massiv tarkibini chop etish mijozlaringizga yordam beradimi yoki yo‘qligini ko‘rib chiqishga vaqt ajrating va agar bu mantiqiy bo‘lsa, ob’ektning o‘rniga massiv tarkibini chop eting. Ishlash sabablariga ko'ra, boshqa ob'ektlarni saqlash uchun Collectionbunday ArrayListyoki HashSet o'rniga foydalanish afzalroqdir .Array

Bonusli maslahatlar

Java-da usulni bekor qilish bo'yicha yana bir qancha bonusli maslahatlar toString.
  1. toStringChiqishni uzunligiga qarab bir nechta satrda yoki bittada chop eting .

  2. To'liq malakali sinf nomlarini vakillikka kiriting toString, boshqacha qilib aytganda, package.classtushunmovchilikni oldini olish uchun.

  3. Siz null qiymatlarni o'tkazib yuborishingiz yoki ularni ko'rsatishingiz mumkin, lekin ularni ko'rsatish yaxshiroqdir. Ba'zan ular foydali bo'ladi, chunki ular biron bir hodisa paytida qaysi maydon mavjudligini ko'rsatadi null, masalan NullPointerException .

  4. Kalit-qiymat formatidan foydalaning, masalan member.name=member.value, ko'pchilik IDElar buni qo'llab-quvvatlaydi.

  5. Agar ular meros qilib olingan sinfga kerakli ma'lumotlarni taqdim etishi kerak deb hisoblasangiz, meros qolgan a'zolarni qo'shing.

  6. Ba'zan ob'ekt ko'plab ixtiyoriy va talab qilinadigan parametrlarni o'z ichiga oladi, biz Builder shablonimiz misolida ko'rsatganimizdek , barcha maydonlarni chop etish deyarli imkonsiz bo'lsa, bu holda biz faqat kerakli maydonlarni chop etishimiz mumkin, ayniqsa bizda ixtiyoriy bo'lganlar mavjud.

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