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. 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
Do'stlaringiz bilan baham: |