Параметризирани класове на 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. Това изпълнение е необходимо, за да се осигури съвместимост с код, създаден в предишни версии на езика.