Java Урок 62: ОБОБЩЕНИЯ, обобщенный класс с двумя параметрами типа

Для обобщенного типа можно объявлять более одного параметра типа. Чтобы указать два или более параметров типа, просто используйте разделенный запятыми список.

Скачать исходники для статьи можно ниже

[sape]

Например, следующий класс TwoGen — это вариант класса Gen, который
принимает два параметра:

// Простой обобщенный класс с двумя
// параметрами типа: Т и V.
class TwoGen<T, V> {
   Т obi;
   V оb2 ;
   // Передать конструктору ссылки на объект типа Т и объект типа V.
   TwoGen(Т ol, V о2) {
      obi = ol;
      оb2 = о2;
   }

   // Показать типы Т и V.
   void showTypes() {
      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<Integer, String> tgObj = new TwoGen<Integer, String>(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<T, V> {

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

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

В этом случае класс Integer подставляется вместо параметра Т, а класс String — вместо параметра V.

Хотя два аргумента в примере отличаются, допустимо передать в параметрах два одинаковых типа.

Например, следующая строка кода вполне корректна:

TwoGen<String, String> х = new TwoGen<String, String> ("A", "В");

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

Введите свой email адрес для того, чтобы подписаться на мой блог:


knopkisoc

Добавить комментарий