Mustaqil ish Mavzu: Java Generics


Generiklar faqat mos yozuvlar turlari bilan ishlaydi


Download 312.82 Kb.
bet4/5
Sana06.04.2023
Hajmi312.82 Kb.
#1335115
1   2   3   4   5
Bog'liq
Mustaqil ish1 TDA

Generiklar faqat mos yozuvlar turlari bilan ishlaydi: 

Generiklar faqat mos yozuvlar turlari bilan ishlaydi: 

Umumiy turdagi namunani e'lon qilganimizda, type parametriga uzatiladigan tip argumenti mos yozuvlar turi bo'lishi kerak. Biz int , char kabi ibtidoiy ma'lumotlar turlaridan foydalana olmaymiz

Yuqoridagi satr kompilyatsiya vaqtida xatolikka olib keladi, uni ibtidoiy turni inkapsulyatsiya qilish uchun turdagi o'ramlar yordamida hal qilish mumkin. 

Lekin ibtidoiy tipdagi massivlarni tip parametriga o'tkazish mumkin, chunki massivlar mos yozuvlar turlaridir.

.

Umumiy funktsiyalar: 

Umumiy funktsiyalar: 

Umumiy usulga o'tkazilgan argumentlar turiga qarab har xil turdagi argumentlar bilan chaqirilishi mumkin bo'lgan umumiy funktsiyalarni ham yozishimiz mumkin. Kompilyator har bir usulni boshqaradi.

Java Generics orqali meros olish

Ma'lumki, bir turdagi ob'ektni boshqa turdagi ob'ektga turlar mos kelsa, belgilash mumkin. Masalan, Ob'ektga Integerni belgilashingiz mumkin , chunki Object Integerning supertiplaridan biridir :

Object someObject = new Object(); Integer someInteger = new Integer(10); someObject = someInteger; // OK

Ob'ektga yo'naltirilgan terminologiyada bu "a" munosabati deb ataladi. Integer Ob'ektning bir turi bo'lgani uchun tayinlashga ruxsat beriladi. Ammo Integer ham Number ning bir turi , shuning uchun quyidagi kod ham amal qiladi:

public void someMethod(Number n) { /* ... */ } someMethod(yangi Integer(10)); // OK someMethod (yangi Double(10.1)); // OK

Xuddi shu narsa generiklarga ham tegishli. Siz umumiy turdagi chaqiruvni bajarishingiz mumkin , uning turi argumenti sifatida Raqamni o'tkazishingiz mumkin va agar argument Number bilan mos bo'lsa, qo'shishning keyingi chaqiruviga ruxsat beriladi :

Box qutisi = yangi quti(); box.add(yangi Integer(10)); // OK box.add(yangi Double(10.1)); // OK


Download 312.82 Kb.

Do'stlaringiz bilan baham:
1   2   3   4   5




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling