1 / 32

Новые возможности Java 5

Новые возможности Java 5. Java Advanced. Содержание. Перечисления Метаданные Другие возможности Заключение. Часть 1. Перечисления. Как было раньше. Пример public final static int NEW = 1; public final static int RUNNING = 2; public final static int BLOCKED = 3;

Download Presentation

Новые возможности Java 5

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Новые возможности Java 5 Java Advanced

  2. Содержание • Перечисления • Метаданные • Другие возможности • Заключение Java Advanced / Новые возможности Java 5

  3. Часть 1 Перечисления

  4. Как было раньше • Пример public final static int NEW = 1; public final static int RUNNING = 2; public final static int BLOCKED = 3; public final static int FINISHED = 4; • Проблемы • Нет проверки типов • Нет проверки уникальности • Плохая расширяемость • Малая информативность Java Advanced / Новые возможности Java 5

  5. Перечислимый тип • Пример public enum State { NEW, RUNNING, BLOCKED, FINISHED } • Каждое перечисление является независимой областью видимости Java Advanced / Новые возможности Java 5

  6. Идентификация переменных • Классом • Экземплярами • Именами • Номерами • Имя • Идентификатор экземпляра • Метод name() • Номер • Может быть передан в конструктор экземпляра • Метод ordinal() Java Advanced / Новые возможности Java 5

  7. Перечисления как классы • Перечисление может иметь • Закрытые конструкторы • Поля • Методы • Абстрактные методы, если они определены в каждом экземпляре • Перечисление может реализовывать интерфейсы Java Advanced / Новые возможности Java 5

  8. Пример: меры длины public enum Unit { KILOMETER(1e3), METER(1), MILLIMETER(1e-3); private final double length; private Unit(double length) { this.length = length; } public double getLength() { return length; } } Java Advanced / Новые возможности Java 5

  9. Методы работы с перечислениями • Класс Enum– базовый для перечислений • name() – имя • ordinal() – номер • valueOf(Class, name) – экземпляр по номеру • Дополнительные • values() – все экземпляры • valueOf(name) – экземпляр по имени • Методы классов • isEnum() – является ли перечислением • getEnumConstants() –все экземпляры Java Advanced / Новые возможности Java 5

  10. Часть 2 Метаданные

  11. Метаданные и аннотации • Метаданные – информация, непосредственно не влияющая на выполнение программы • Аннотации – тип метаданных в Java Java Advanced / Новые возможности Java 5

  12. Пример определения аннотации public @interface RequestForEnhancement { int id(); String synopsis(); String engineer() default "[unassigned]"; String date() default "[unimplemented]"; } Маркер аннотации Имя аннотации Значения по умолчанию Определения полей Java Advanced / Новые возможности Java 5

  13. Пример использования аннотации @RequestForEnhancement( id = 2868724, synopsis = "Enable time-travel", engineer = "Mr. Peabody", date = "4/1/3007" ) public static void travelThroughTime( Date destination) Java Advanced / Новые возможности Java 5

  14. Типы аннотаций • Обыкновенная • Маркерная – без параметров • Может использоваться без скобок • Одиночная – с одним параметром • Параметр должен называться value() • Может инициализироваться без указания имени параметра Java Advanced / Новые возможности Java 5

  15. Типы параметров аннотаций • Возможные типы • Примитивные типы • String • Class • Перечислимый тип • Аннотация • Массив вышеперечисленного Java Advanced / Новые возможности Java 5

  16. Время жизни аннотации • Аннотация@Retention(RetentionPolicy) • Возможные значения • SOURCE – до компиляции • CLASS – в класс файле • RUNTIME – во время выполнения Java Advanced / Новые возможности Java 5

  17. Применимость аннотации • Аннотация@Target(ElementType[]) • Возможные значения • TYPE – любой тип • FIELD – поле класса • METHOD– метод класса • CONSTRUCTOR – конструктор класса • PARAMETER – параметр метода • LOCAL_VARIABLE – локальная переменная • ANNOTATION_TYPE – аннотация • PACKAGE – пакет Java Advanced / Новые возможности Java 5

  18. Наследование аннотаций • Аннотация@Inherited • Аннотация объявленная @Inherited автоматически наследуются при переопределении метода / класса Java Advanced / Новые возможности Java 5

  19. Аннотации и документация • Аннотация@Documented • Аннотация объявленная @Documented попадает в JavaDocаннотированного документа • Применяется для аннотаций, изменяющих поведение Java Advanced / Новые возможности Java 5

  20. Аннотация @SuppressWarnings • Подавляет генерацию предостережений указанного тип при компиляции аннотированного элемента • Пример @SuppressWarnings("unchecked") public T<E> toArray() { return (T<E>[]) list.toArray(new T[]); } Java Advanced / Новые возможности Java 5

  21. Аннотация @Deprecated • Помечает метод как deprecated • Пример @Deprecated public final void stop() { … } Java Advanced / Новые возможности Java 5

  22. Аннотации во время выполнения • Интерфейс AnnotatedElement • Методы • isAnnotationPresent(Class) – проверяет наличие аннотации данного типа • getAnnotation(Class) – возвращает аннотацию данного типа. • getAnnotations() – все аннотации • getDeclaredAnnotations() – непосредственно объявленные аннотации Java Advanced / Новые возможности Java 5

  23. Пример: тестирование (1) • Аннотация @Retention(RetentionPolicy.RUNTIME) @Target(ElementType.METHOD) public @interface Test { } • Пример использования public class SimpleTest { @Test public void testXXX(); @Test public void testYYY(); } Java Advanced / Новые возможности Java 5

  24. Пример: тестирование (2) • Запуск тестов for (Method m : clazz.getMethods()) { if (m.isAnnotationPresent(Test.class)) { try { m.invoke(null); } catch (Throwable ex) { System.out.printf("Test %s failed: %s %n", m, ex.getCause()); } } } Java Advanced / Новые возможности Java 5

  25. APT и Mirror API • Annotation Processing Tool – позволяет работать с аннотациями до компиляциипрограммы • Mirror API– позволяет работать с информацией о классах до их компиляции Java Advanced / Новые возможности Java 5

  26. Часть 3 Другие возможности

  27. Переменное число аргументов • Методы с переменным числом аргументов • method(args, Type … name) -- сигнатура • method – имя метода • args – список обычных аргументов • Type – тип дополнительных аргументов • name – имя формального параметра • Формальный параметр имеет тип Type[] Java Advanced / Новые возможности Java 5

  28. Статические импорты • Статические члены могут быть импортированы import static Math.PI; … angle = PI / 2 • Статические метод может быть импортирован import static Math.cos() … cos(angle) Java Advanced / Новые возможности Java 5

  29. Часть 4 Заключение

  30. Ссылки (1) • New Java Language Fatures // http://java.sun.com/j2se/1.5.0/docs/relnotes/features.html#lang • Enums (JLS) // http://java.sun.com/docs/books/jls/third_edition/html/classes.html#8.9 • Import Declarations (JLS) // http://java.sun.com/docs/books/jls/third_edition/html/packages.html#7.5 Java Advanced / Новые возможности Java 5

  31. Ссылки (2) • Interfaces (JLS) // http://java.sun.com/docs/books/jls/third_edition/html/interfaces.html • Getting started with APT // http://java.sun.com/j2se/1.5.0/docs/guide/apt/GettingStarted.html • Mirror API // http://java.sun.com/j2se/1.5.0/docs/guide/apt/mirror/overview-summary.html Java Advanced / Новые возможности Java 5

  32. Вопросы Java Advanced / Новые возможности Java 5

More Related