Параметризирани класове на Java, блог за криптиране
Най-важните нововъведения във версията на езика J2SE 5 включват появата на параметризирани (родови) класове и методи, позволяващи използването на по-гъвкави и в същото време доста силни текстове, което е особено важно при работа с колекции. Използването на общи класове за създаване на типизирани колекции ще бъде обсъдено в главата Колекции. Параметризацията ви позволява да създавате класове, интерфейси и методи, в които видът на обработваните данни е посочен като параметър.
Ето пример за общ клас с два параметъра:
публично клас Предмет
частни Име Т1;
публично Тема (T2 идентификатори, имена T1)
Обект на класа Предмет може да се създаде по следния начин:
нов предмет (ch, 71D);
Параметризираните типове осигуряват безопасност на типа.
Следва пример за параметризиран клас По желание с конструктори и методи, както и инициализация и изследване на поведението на обектите при задаване на различни параметри.
/ * пример # 10: създаване и използване на параметризирани обекти
публично клас По желание
частни T стойност;
публично По избор (T стойност)
публично T getValue ()
публично нищожен setValue (T val)
публично String toString ()
връщане value.getClass (). getName () + " + стойност;
публично статични нищожен main (String [] аргументи)
инт v1 = ob1.getValue ();
ново По избор ("Java");
Низ v2 = ob2.getValue ();
// ob1 = ob2; // грешка при компилация - параметризацията не е ковариантна
По избор ob3 = ново По избор ();
ob3.setValue ("Java SE 6");
тип обект, а не тип параметризация * /
В резултат на изпълнението на тази програма ще се покаже следното:
java.lang.String Java SE 6
В разглеждания пример обекти от типа По желание: ob1 въз основа на типа Цяло число и ob2 въз основа на типа Струна използвайки различни конструктори. По време на компилацията цялата информация за родови типове се изтрива и заменя за членовете и методите на класа с посочените типове или тип Обект, ако параметърът не е посочен, както за обекта ob3. Това изпълнение е необходимо, за да се осигури съвместимост с код, създаден в предишни версии на езика.