Обобщенный класс с двумя параметрами типа

Для обобщенного типа можно объявлять более одного типа-параметра. Чтобы указать два или более типа-параметра, просто используйте разделенный запятыми список. Например, следующий класс TwoGen — это вариант класса Gen, который принимает два параметра:

// Простой обобщенный класс с двумя
// типами-параметрами: Т и V.
class TwoGen {
Т obi;
V ob2;
// Передать конструктору ссылки на объект типа Т и объект типа V.
TwoGen (Т ol, V о2) {
obi = ol;
оЬ2 = о2;
}
// Показать типы Т и V.
void showTypesO {
System.out.println("Тип T: " + obi.getClass().getNameО);
System.out.println("Тип V: " + ob2.getClass().getName());
}
T getobl () {
return obi;
}
V getob2 () {
return ob2;
}
}
// Демонстрация TwoGen.
class SimpGen {
public static void main(String args[]) {
TwoGen tgObj = new TwoGen(88, "Обобщения");
// Показать типы.
tgObj.showTypes();
// Получить и показать значения.
int v = tgObj.getobl();
System.out.println("Значение: " + v);
String str = tgObj.getob2();
System.out.println("Значение: " + str);
}

Результат работы этой программы:

Тип Т: java.lang.Integer
Тип V: java.lang.String
Значение: 88
Значение: Обобщения

Обратите внимание на объявление TwoGen: class TwoGen {

Она специфицирует два параметра типа: т и V, разделенные запятой. Поскольку он имеет два параметра типа, при создании объекта TwoGen должны быть переданы два типа аргумента, как показано ниже:

TwoGen tgObj = new TwoGen(88, "Обобщения");

В этом случае Integer подставляется вместо Т, a String — вместо V. Хотя два аргумента в примере отличаются, допустимо передать в параметрах два одинаковых типа. Например, следующая строка кода вполне корректна:

TwoGen х = new TwoGen("А", "В");

В этом случае оба аргумента V и т будут иметь тип string. Конечно, если оба аргумента всегда будут одинаковы, то два параметра не обязательны.