Page 105 - 6253
P. 105
System.out.println((Integer) intOb.getob()); // Помилка часу
виконання!
}
}
Запустивши програму на виконання отримаємо наступний результат:
Типом obj є java.lang.Integer
Значення intOb: 10
Типом obj є java.lang.String
Значення strOb: Текст
У класі NonGeneric замінено усі звернення до типу Т на звернення до типу
Objесt, що дозволяє класу NonGeneric зберігати об’єкти будь-якого типу, як це
робить і узагальнена версія класу Generic. Проте компілятор у такому випадку не
має жодної реальної інформації про тип даних, які зберігаються в об’єкті класу
NonGeneric. Тому, по-перше, для витягування збережених даних необхідне явне
приведення типів, а по-друге – більшість помилок невідповідності типів не можуть
бути виявлені на етапі компіляції.
Оголошення декількох параметрів типу
Для узагальненого класу можна оголосити більше одного параметра типу. Щоб
вказати більше одного параметра типу, використовується розділений комами
список. Розглянемо узагальнений клас з назвою TwoGeneric в якому
використовується два параметра типу.
// Створення узагальненого класу з двома параметрами типу
class TwoGeneric<T, V> {
T obj1;
V obj2;
TwoGeneric(T о1, V o2) {
obj1 = о1;
104