Дана стаття присвячена новій розробці компанії sun - jdk 5

Отже, які особливості можна назвати революційними:

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 i = c.iterator (); i.hasNext (); )

Щоб було щось конкретніше, напишемо повноцінний приклад.

Давайте потихеньку розберемося з нашою програмою. Перша непонятка це рядок, яка починається з @Retention (.

Розробники JDK 5.0 запропонували наступний спосіб введення мета-даних:

Програміст описує структуру тих мета-даних, які він буде використовувати. Я ввів структуру, яка містить всього одне поле - comment

Повна запис мета-даних виглядає так:

Після введення мета-даних програміст може використовувати ці мета-дані де йому цікаво. Зрозуміло, що таких структур буде не одна, а багато. Ми для прикладу взяли одну. Скрізь, де зустрічається @debug (крім опису) ми бачимо, що в дужках пара «параметр = значення».

А далі все дуже просто - ми використовували дану структуру для зберігання інформації для самого класу, параметра і методу.

У методі main ми по черзі попросили повернути анотації у самого класу, потім у методу і поля. Якщо Ви трохи пограєте з даною програмою, то зрозумієте досить багато.