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