Java toString usuli
toString
Object
Java 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.Object
Order
Trade
Employee
toString
toString
package.class@hashCode
toString()
toString()
Country
Socket
ServerSocket
toString
toString
toString
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 maslahattoString
. Oddiy toString()
sinf java.util.Date
formatlangan 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 Date
va 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 usulingiztoString()
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. StringBuilder
append()
toString
toString
@Override izohidan foydalanish
Java-da usulni bekor qilishdan foydalanish@Override
tildagi 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 qilmayditoString
va 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 Collection
bunday ArrayList
yoki HashSet o'rniga foydalanish afzalroqdir .Array
Bonusli maslahatlar
Java-da usulni bekor qilish bo'yicha yana bir qancha bonusli maslahatlartoString
.
-
toString
Chiqishni uzunligiga qarab bir nechta satrda yoki bittada chop eting . -
To'liq malakali sinf nomlarini vakillikka kiriting
toString
, boshqacha qilib aytganda,package.class
tushunmovchilikni oldini olish uchun. -
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 . -
Kalit-qiymat formatidan foydalaning, masalan
member.name=member.value
, ko'pchilik IDElar buni qo'llab-quvvatlaydi. -
Agar ular meros qilib olingan sinfga kerakli ma'lumotlarni taqdim etishi kerak deb hisoblasangiz, meros qolgan a'zolarni qo'shing.
-
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.
GO TO FULL VERSION