Отже, які особливості можна назвати революційними:
1. Generics - переводу в одне слово це поняття піддається насилу. Можна дати приблизно таке трактування: «узагальнені характеристики всього класу».
У двох словах це виглядає так: раніше все, що програміст поміщав в класи Collection (Vector, List, Stack) мало тип Object. Якщо Ви отримували елемент з Collection (наприклад, типу String), то Вам необхідно було робити обов'язково так:
String str = (String) v.get (0);
for (Iterator i = c.iterator (); i.hasNext ();)
Зауважте, що тут є два моменти. По-перше, необхідно привести тип елемента з колекції до потрібного вигляду. І, по-друге, треба бути впевненим, що він дійсно String. НІЯКИХ гарантій, що там виявиться саме String, Вам не давалося. У будь-який момент в колекцію можна було покласти будь-який інший тип даних. І відповідно далі все було справою або довіри - там немає нічого крім String, або треба було переконуватися, що тип саме String.
Тепер у Вас може бути така впевненість - Ви можете на етапі компіляції вказати, який тип Ви хочете зберігати в колекції. І вже на етапі компіляції Вам скажуть, що Ви робите щось не те.
for (Iterator
Щоб було щось конкретніше, напишемо повноцінний приклад.
Давайте потихеньку розберемося з нашою програмою. Перша непонятка це рядок, яка починається з @Retention (.
Розробники JDK 5.0 запропонували наступний спосіб введення мета-даних:
Програміст описує структуру тих мета-даних, які він буде використовувати. Я ввів структуру, яка містить всього одне поле - comment
Повна запис мета-даних виглядає так:
Після введення мета-даних програміст може використовувати ці мета-дані де йому цікаво. Зрозуміло, що таких структур буде не одна, а багато. Ми для прикладу взяли одну. Скрізь, де зустрічається @debug (крім опису) ми бачимо, що в дужках пара «параметр = значення».
А далі все дуже просто - ми використовували дану структуру для зберігання інформації для самого класу, параметра і методу.
У методі main ми по черзі попросили повернути анотації у самого класу, потім у методу і поля. Якщо Ви трохи пограєте з даною програмою, то зрозумієте досить багато.