Kompyuterlar, Dasturlash
Java Generics: Sharh va usullari
Java tilida paydo bo'lgan boshlab, hech shubhasiz, uning faoliyati ijobiy lahzalar olib o'zgarishlar, ko'p ro'y berdi. Bu muhim o'zgarishlardan biri Java umumiy yoki Umumiy joriy etish hisoblanadi. Bu xususiyatlar faqat til yanada moslashuvchan va ko'p tomonlama, balki ma'lumotlarni turlarini olib bo'yicha ko'p xavfsizroq qilish emas.
haqiqat Java umumiy kod tovar joriy oldin turi Referent nuqtai nazaridan emas, balki faqat, yaratilgan bo'lishi mumkin emas. Bunday ishoratlar har qanday ob'ekt berilishi mumkin. Axir, Java sinflar shubhasiz ob'ektni sinf voris bo'ladi. Biroq, bu yondashuv maqsad turi ob'ekt bir ob'ektga zohiriy konvertatsiya xavfsizlik turlari bilan bog'liq ko'plab xatolar potentsial manbai hisoblanadi. umumlashma ishlatilayotgan hamma izlar xatolar uchun ham salohiyatga bartaraf bilvosita va avtomatik ravishda amalga oshiriladi.
Java Generics: Sharh va namuna
AQSh quyidagi tarzda muntazam sinflar uchun umumlashtirish qo'llash oddiy misolni ko'rib chiqaylik. Va keyin barcha nozik va Java umumiy nüansları batafsil ko'rikdan o'ting.
sinf deklaratsiya Pair sodir bo'lgan yo'l e'tibor. Darhol sinf nomi so'ng, xat T. ko'rsatilgan ochiq burchak qavslardan, ma'lum bir turi bilan almashtiriladi, bu sinfning bir misol yaratish jarayonida bo'lgan plomba bir xil, deb. quyidagicha ko'rinadi: Pair
Eslatma: bo'sh qoldirilishi mumkin konstruktor yozuvlar burchakli qavs e'lon, maqsad turini bildirib, Java sakkizinchi versiyasi bilan boshlangan. misol yuqorida sifatida qayta yozilgan bo'lishi mumkin, shuning uchun: Pair
a sinf joylari, uzumzorlar, bu xat foydalanishingiz mumkin yo'llar bilan qaytib muayyan ob'ekt turlari o'rniga uning tanasida keyin, bunday tarzda e'lon qilingan. T yildan sinf ob'ekt bu holda birinchi va ikkinchi maydonlarni turi Integer bo'ladi muayyan turiga, o'rniga yaratishda.
dalillar va firstItem secondItem qoidasi quyidagi, shuningdek, turi Integer yoki kichik guruhi bo'lishi kerak tegishli konstruktor ataladi. Agar ob'ekt yaratish paytida belgilangan nima farq bo'lgan ma'lumotlar turini uzatish uchun harakat bo'lsa, kompilyator bu xato yo'l qo'ymayman. Shunday qilib, bir ob'ekt sifatida bo'ladi vajlari konstruktor quyidagicha: Pair
bir necha parametrlar sinf turlari bilan umumiy
umumiy sinflarda ham vergul bilan burchagi qavs ichida belgilangan turdagi bir nechta parametrlari e'lon mumkin. Pair sinf quyida keltirilgan bir holatda tomonidan qayta ishlangan.
Ko'rib turganingizdek siz burchagi qavs ichida bu sinfning bir misol yaratgandan so'ng, parametr sifatida turlari shu sonini ko'rsatadi kerak. Agar xaritasi ma'lumotlar tarkibini, bu turi bilan tanish bo'lsangiz, u aynan shu tamoyilini foydalanadi ko'rishingiz mumkin. qiymati turini - bor, birinchi argument kaliti turini, va ikkinchi belgilaydi. Bu bilan yuqadigan turlari bir ob'ekt vajlari ustiga o'raydigan mumkin bo'lsa, ta'kidlash lozim. Misol uchun, quyidagi E'lon Pair sinf holat mutlaqo to'g'ri: Pair
Umumiy ba'zi xususiyatlari
yanada borishdan oldin, u Java kompilyator sinf Pair turli versiyalarini yaratish emas, deb ta'kidlash lozim. Aslida, bir umumiy turi Hamma ma'lumot kompilyatsiya jarayonida o'chiriladi. Buning o'rniga, siz Pair sinf maxsus versiyasini yaratish, tegishli turdagi olib. Biroq, dastur hali sinf faqat bir umumiy versiyasi bor. Bu jarayon Java Umumiy tozalash turi deyiladi.
muhim nuqtasini bering. Shu java umumiy sinf turli versiyalari uchun Links bir xil ob'ektga ishora mumkin emas. Pair
umumiy sinflar bo'yicha cheklovlar
Bu umumlashma turdagi murojaat qilish uchun faqat qo'llanilishi mumkin, deb bilish muhim ahamiyatga ega, deb parametrlarni sinf turi bo'lishi kerak umumiy sinf java mustaqil o'zgarmaydigan o'tkazishga hisoblanadi. ikki yoki uzoq, masalan, Bu oddiy turlari, berilishi mumkin emas. Boshqa so'zlar bilan aytganda, quyidagi yo'l Pair sinf deklaratsiya ruxsat berilmaydi: Pair
Yana bir jiddiy cheklash parametr turiga misol yaratish Ishonchsizlik. Misol uchun, quyidagi liniyasi bo'lgan derleme xatosi sabab bo'ladi: T birinchi = new T (). bir argument to'liq sinf yoki mavhum, hatto interfeysi o'tgan bo'lsin sizga oldindan bilmayman, chunki bu, ochiq-oydin bo'ladi. Shu-ketliklar yaratish uchun ketadi.
cheklangan turlari
u umumiy sinfini Java uchun argument sifatida uzatiladi mumkin turlari ro'yxatini cheklash zarur bo'lsa ko'pincha vaziyatlar bor. bizning sinf juftlikda Biz ularga yanada matematik operatsiyalar uchun faqat raqamli qiymatlari kapsüllemek uchun kerakli, deb faraz qilaylik. Buning uchun biz parametr turiga yuqori chegarasi aniqlash kerak bo'ladi. Bu burchakli qavs ichida o'tgan barcha dalillarni meros super reklamalar orqali amalga oshiriladi. quyidagicha Bu qarash qiladi: sinf Pair
Bu oddiy qabul bo'ladi. Bunday cheklashlar, tez-tez bir xil sinf muvofiqligi turi parametrlarini ta'minlash uchun ishlatiladi. Bizning sinf juftlikda misolni ko'rib chiqaylik: sinf Pair
"Quyi" cheklash aynan bir xil yo'l, lekin so'zi o'rniga so'zi super sehr uzaytiradi. Bu tasniflanadi sinf Pair
Umumiy Java usullari va quruvchi
Java, umumlashma, shuningdek, usullari faqat sinflar uchun emas qo'llaniladigan, lekin mumkin. Misol uchun, bir umumiy usul doimiy sinfda e'lon qilinishi mumkin.
Yuqoridagi rasmda ko'rinib turganidek, reklama umumiy usul katta shartnoma emas. bir usuli Qaytish turi burchakli qavs qo'yish va ularga turi parametrlarini belgilash uchun avval etarli.
hamma narsa konstruktor shunga o'xshash tarzda amalga oshiriladi bo'lsa:
bu holatda burchak qavslardan u hech Qaytish ahamiyatga ega, chunki, dizayner nomi oldin qo'ydi. Har ikki dasturlar natijasi bo'ladi:
Integer
string
Similar articles
Trending Now