Page 107 - 6253
P. 107

Хоча у представленому прикладі два аргументи типу відрізняються між собою,

            допустимий  варіант  передачі  через  параметри  двох  однакових  типів  даних.

            Наприклад, наступний рядок коду є цілком коректний.


                  TwoGeneric<String, String> myOb =
                       new TwoGeneric<String, String>("Str1", "Str2");

                  Обмежені типи


                  У  деяких  випадках  необхідно  обмежити  список  типів,  що  передаються  через

            параметри  у  клас.  Для  цього  компілятору  необхідно  повідомити  про  те,  що  через

            параметр  типу  будуть  передаватися  значення  тільки  визначених  типів.  Також,

            необхідна певна гарантія того, що будуть передаватися значення тільки визначених

            типів.


                  Описані вище проблеми у мові Java можна вирішити використавши концепцію

            обмежених  типів.  Для  цього  створюється  обмеження  у  вигляді  суперкласу,  від

            якого успадковується  усі аргументи  типів. Таке обмеження використовує ключове

            слово extends при вказуванні параметра типу.



                  class Ім’я_класу<Т extends Суперклас> {

                      // тіло класу


                  }


                  Це означає, що параметр типу Т може бути замінений тільки класом Суперклас
            або  його  підкласами.  Розглянемо  приклад,  у  якому  представлено  використання


            концепції обмежених типів.


                  // Створення узгальненого класу з обмеженням типів

                  class Generic <T extends Number> {

                      T[] nums; // Оголошення об'єкту типу Number



                      Generic(T[] о) {

                          nums = о;

                      }

                      double average() {



                                                              106
   102   103   104   105   106   107   108   109   110   111   112