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
   100   101   102   103   104   105   106   107   108   109   110