bu qiymatni qaytaring ;
}
void setValue(T qiymati) { bu .value = qiymat;
}
}
umumiy sinf DemoTemplate {
public static void main(String [] args){ CurrentType < Integer > ob1;
ob1 = yangi CurrentType(); ob1.setValue (yangi Integer(7)); System.out.println(ob1.getValue()); ob2=currenttype
yangi CurrentType("Java"); System.out.println(ob2.getValue());
}
}
DemoTemplate sinfida ikkita ob'ekt yaratiladi: ob 1 Integer turiga asoslangan va ob 2 String turiga asoslangan turli konstruktorlar yordamida.
Quyidagi sinf deklaratsiyasida ishlatiladigan turlarga cheklovlar qo'yishingiz mumkin:
class MyTemplExt < T kengaytiradi Raqam > { T qiymati; }
Ushbu yozuvda aytilishicha, faqat Number sinfining avlodlari bo'lgan sinflar T turi sifatida foydalanishga ruxsat etiladi .
Sinf parametrlari sifatida asosiy turlardan foydalanish taqiqlanadi.
Shablon usullari
Parametrlashtirilgan usul usul tomonidan parametr sifatida qabul qilingan har xil turdagi ma'lumotlarga qo'llaniladigan asosiy operatsiyalar to'plamini belgilaydi va masalan, quyidagicha yozilishi mumkin:
T kengaytiriladi Type > returnType methodName(T arg) {}
T > returnType methodName(T arg) {}
Birinchi tur, kengaytirilgandan keyin ko'rsatilgan sinfning pastki sinflari bo'lgan ob'ektlarni usulga o'tkazish mumkinligini anglatadi . Usulni e'lon qilishning ikkinchi usuli uzatilayotgan turga hech qanday cheklovlar qo'ymaydi.
/* № 3.11 misol: parametrlangan usul: GenericMethod . java */ sinf Umumiy metod {
umumiy statik kengaytiradi > bayt asByte(T num) { return num.byteValue();
}
public static void main(String [] args) { System.out.println(asByte( new Integer(7))); System.out.println(asByte( new Float(7.f))); System.out.println( asByte (yangi belgi('7')));/* xato kompilyatsiya */ }
}
Do'stlaringiz bilan baham: |