
- •Нововведения Java 5.0.
- •Цели занятия
- •Статический импорт
- •Автоупаковка / автораспаковка
- •Автоупаковка / автораспаковка
- •Автоупаковка / автораспаковка
- •Аргументы переменной длины
- •Аргументы переменной длины
- •Особенности переменного
- •Настраиваемые типы (generic)
- •Настраиваемые типы
- •Настраиваемые типы
- •Настраиваемые типы
- •Настраиваемые типы
- •Настраиваемые типы
- •Ограниченные типы
- •Ограниченные типы
- •Ограниченные типы
- •Ограниченные типы
- •Метасимвольный аргумент
- •Метасимвольный аргумент
- •Метасимвольный аргумент
- •Метасимвол с ограничениями
- •Настраиваемые методы
- •Настраиваемые методы
- •Настраиваемые методы
- •Настраиваемые методы
- •Настраиваемые методы
- •Ряд особенностей
- •Ряд особенностей
- •Ряд особенностей
- •Ряд особенностей
- •Ряд особенностей
- •Ряд особенностей
- •Ряд особенностей
- •Ряд особенностей
- •Ряд особенностей
- •Ряд особенностей
- •Ряд особенностей
- •Ряд особенностей
- •Ошибки неоднозначности
- •Улучшенный цикл for(For-each)
- •Работа улучшенного цикла for
- •Обработка многомерных
- •Вывод
- •Перечислимые типы
- •Перечислимые типы
- •Замечания:
- •Метаданные
- •Метаданные
- •Правила сохранения аннотаций
- •Правила сохранения аннотаций
- •Правила сохранения аннотаций
- •Аннотации-маркеры
- •Одночленные аннотации
- •Одночленные аннотации
- •Одночленные аннотации
- •Встроенные аннотации
- •Встроенные аннотации
- •Литература

Аннотации-маркеры
61• Аннотация-маркер — это специальный
тип аннотации, не содержащий методов-членов
•Единственная цель такой аннотации — пометить объявление
•В этом случае достаточно присутствия аннотации
•Лучше всего для проверки наличия аннотации-маркера использовать метод isAnnotationPresent(), который определен в интерфейсе AnnotatedElement
@interface MyMarker {}
Все права защищены. www.haulmont.ru info@haulmont.com |
© HAULMONT, 2013 |

Одночленные аннотации
62• Одночленная аннотация — это еще один
специальный тип аннотации, содержащий
единственный метод-член
•Она применяется так же, как и обычная аннотация, за исключением того, что для этого типа аннотации допускается краткая условная форма задания значения для метода-члена
•Если есть только один метод-член, вы можете просто указать значение для этого метода- члена, когда создается аннотация; при этом не нужно указывать имя метода-члена
•Но для того чтобы воспользоваться краткой формой, следует для метода-члена
использовать имя value
Все права защищены. www.haulmont.ru info@haulmont.com |
© HAULMONT, 2013 |

Одночленные аннотации
63 |
@interface MySingle { |
|
|
|
int value(); //Имя только такое! |
}
@MySingle(100)
•Вы можете применять синтаксическую запись одночленной аннотации, когда создаете аннотацию, у которой есть и другие методы- члены, но для них должны быть заданы значения по умолчанию
@interface SomeAnno { int valuе();
int xyz() default 0;
}
Все права защищены. www.haulmont.ru info@haulmont.com |
© HAULMONT, 2013 |

Одночленные аннотации
64• Если Вы хотите использовать значение по умолчанию для метода xyz(), можно создать
аннотацию типа @SomeAnno, применяя синтаксическую запись для одночленной аннотации с указанием значения для метода value()
@SomeAnno(88)
•В этом случае в метод xyz() передается нулевое значение по умолчанию, а метод value() получает значение 88
•Конечно, передача в метод xyz() значения, отличного от значения по умолчанию, потребует явного задания имен обоих методов-членов
@SomeAnno (value = 88, xyz = 99)
Все права защищены. www.haulmont.ru info@haulmont.com |
© HAULMONT, 2013 |

Встроенные аннотации
65 • @Retention
Применяется к аннотациям, позволяет задать правило сохранения
•@Documented
Применяется к аннотациям, указывает, что она должна быть документирована
•@Target
Применяется к аннотациям, позволяет указать типы объектов, к которым данная аннотация может применяться
•@Inherited
Применяется к аннотациям классов, указывает, что данная аннотация будет унаследована
потомками класса
Все права защищены. www.haulmont.ru info@haulmont.com |
© HAULMONT, 2013 |

Встроенные аннотации
66 • @Override
Применяется к методам, указывает, что метод обязан переопределять метод родительского класса
•@Deprecated
Указывает на то, что объявление является устаревшим или вышедшим из употребления
•@SupressWarnings
Указывает на то, что указанные виды предупреждений компилятора не будут показываться. Эти предупреждения задаются с помощью имен в строковой форме
Все права защищены. www.haulmont.ru info@haulmont.com |
© HAULMONT, 2013 |

|
|
|
Особенности аннотаций |
67 |
• |
Аннотация не может наследовать другую аннотацию |
|
|
|||
|
• |
Все методы, объявляемые в аннотации, не должны |
|
|
|
иметь параметров |
|
|
• |
Все методы, объявляемые в аннотации должны |
|
|
|
возвращать один из перечисленных далее типов: |
|
|
|
|
примитивный тип (int, double) |
|
|
|
объект типа String |
|
|
|
объект типа Class |
|
|
|
перечислимый тип (enum) |
|
|
|
другой тип аннотации |
|
|
|
массив элементов одного из вышеперечисленных |
|
|
|
типов |
|
• |
В аннотациях нельзя задавать ключевое слово throws |
|
|
• |
Аннотации не могут быть настраиваемыми, т.е. они не |
|
|
|
могут принимать параметры типа |
Все права защищены. www.haulmont.ru info@haulmont.com |
© HAULMONT, 2013 |

Литература
68• Шилдт Г. Java 2, v5.0 (Tiger). Новые возможности: Пер. с англ. – СПб.: БХВ-
Петербург, 2005.
Все права защищены. www.haulmont.ru info@haulmont.com |
© HAULMONT, 2013 |