Скачать презентацию
Идет загрузка презентации. Пожалуйста, подождите
Презентация была опубликована 12 лет назад пользователемwww.amse.ru
1 Новые возможности Java 5 Java Advanced
2 2Georgiy KorneevJava Advanced / Новые возможности Java 5 Содержание Перечисления Метаданные Другие возможности Заключение
3 Перечисления Часть 1
4 4Georgiy KorneevJava Advanced / Новые возможности Java 5 Как было раньше Пример public final static int NEW = 1; public final static int RUNNING = 2; public final static int BLOCKED = 3; public final static int FINISHED = 4; Проблемы Нет проверки типов Нет проверки уникальности Плохая расширяемость Малая информативность
5 5Georgiy KorneevJava Advanced / Новые возможности Java 5 Перечислимый тип Пример public enum State { NEW, RUNNING, BLOCKED, FINISHED } Каждое перечисление является независимой областью видимости
6 6Georgiy KorneevJava Advanced / Новые возможности Java 5 Идентификация переменных Классом Экземплярами Именами Номерами Имя Идентификатор экземпляра Метод name() Номер Может быть передан в конструктор экземпляра Метод ordinal()
7 7Georgiy KorneevJava Advanced / Новые возможности Java 5 Перечисления как классы Перечисление может иметь Закрытые конструкторы Поля Методы Абстрактные методы, если они определены в каждом экземпляре Перечисление может реализовывать интерфейсы
8 8Georgiy KorneevJava Advanced / Новые возможности Java 5 Пример: меры длины 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; }
9 9Georgiy KorneevJava Advanced / Новые возможности Java 5 Методы работы с перечислениями Класс Enum – базовый для перечислений name() – имя ordinal() – номер valueOf(Class, name) – экземпляр по номеру Дополнительные values() – все экземпляры valueOf(name) – экземпляр по имени Методы классов isEnum() – является ли перечислением getEnumConstants() –все экземпляры
10 Метаданные Часть 2
11 11Georgiy KorneevJava Advanced / Новые возможности Java 5 Метаданные и аннотации Метаданные – информация, непосредственно не влияющая на выполнение программы Аннотации – тип метаданных в Java
12 12Georgiy KorneevJava Advanced / Новые возможности Java 5 Пример определения аннотации RequestForEnhancement { int id(); String synopsis(); String engineer() default "[unassigned]"; String date() default "[unimplemented]"; } Маркер аннотации Определения полей Значения по умолчанию Имя аннотации
13 13Georgiy KorneevJava Advanced / Новые возможности Java 5 Пример использования id = , synopsis = "Enable time-travel", engineer = "Mr. Peabody", date = "4/1/3007" ) public static void travelThroughTime( Date destination)
14 14Georgiy KorneevJava Advanced / Новые возможности Java 5 Типы аннотаций Обыкновенная Маркерная – без параметров Может использоваться без скобок Одиночная – с одним параметром Параметр должен называться value() Может инициализироваться без указания имени параметра
15 15Georgiy KorneevJava Advanced / Новые возможности Java 5 Типы параметров аннотаций Возможные типы Примитивные типы String Class Перечислимый тип Аннотация Массив вышеперечисленного
16 16Georgiy KorneevJava Advanced / Новые возможности Java 5 Время жизни аннотации Возможные значения SOURCE – до компиляции CLASS – в класс файле RUNTIME – во время выполнения
17 17Georgiy KorneevJava Advanced / Новые возможности Java 5 Применимость аннотации Возможные значения TYPE – любой тип FIELD – поле класса METHOD – метод класса CONSTRUCTOR – конструктор класса PARAMETER – параметр метода LOCAL_VARIABLE – локальная переменная ANNOTATION_TYPE – аннотация PACKAGE – пакет
18 18Georgiy KorneevJava Advanced / Новые возможности Java 5 Наследование аннотаций Аннотация автоматически наследуются при переопределении метода / класса
19 19Georgiy KorneevJava Advanced / Новые возможности Java 5 Аннотации и документация Аннотация попадает в JavaDoc аннотированного документа Применяется для аннотаций, изменяющих поведение
20 20Georgiy KorneevJava Advanced / Новые возможности Java 5 Подавляет генерацию предостережений указанного тип при компиляции аннотированного элемента public T toArray() { return (T []) list.toArray(new T[]); }
21 21Georgiy KorneevJava Advanced / Новые возможности Java 5 Помечает метод как deprecated public final void stop() { … }
22 22Georgiy KorneevJava Advanced / Новые возможности Java 5 Аннотации во время выполнения Интерфейс AnnotatedElement Методы isAnnotationPresent(Class) – проверяет наличие аннотации данного типа getAnnotation(Class) – возвращает аннотацию данного типа. getAnnotations() – все аннотации getDeclaredAnnotations() – непосредственно объявленные аннотации
23 23Georgiy KorneevJava Advanced / Новые возможности Java 5 Пример: тестирование Test { } Пример использования public class SimpleTest public void public void testYYY(); }
24 24Georgiy KorneevJava Advanced / Новые возможности Java 5 Пример: тестирование (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()); }
25 25Georgiy KorneevJava Advanced / Новые возможности Java 5 APT и Mirror API Annotation Processing Tool – позволяет работать с аннотациями до компиляции программы Mirror API – позволяет работать с информацией о классах до их компиляции
26 Другие возможности Часть 3
27 27Georgiy KorneevJava Advanced / Новые возможности Java 5 Переменное число аргументов Методы с переменным числом аргументов method(args, Type … name) -- сигнатура method – имя метода args – список обычных аргументов Type – тип дополнительных аргументов name – имя формального параметра Формальный параметр имеет тип Type[]
28 28Georgiy KorneevJava Advanced / Новые возможности Java 5 Статические импорты Статические члены могут быть импортированы import static Math.PI; … angle = PI / 2 Статические метод может быть импортирован import static Math.cos() … cos(angle)
29 Заключение Часть 4
30 30Georgiy KorneevJava Advanced / Новые возможности Java 5 Ссылки (1) New Java Language Fatures // eatures.html#lang eatures.html#lang Enums (JLS) // n/html/classes.html#8.9 n/html/classes.html#8.9 Import Declarations (JLS) // n/html/packages.html#7.5 n/html/packages.html#7.5
31 31Georgiy KorneevJava Advanced / Новые возможности Java 5 Ссылки (2) Interfaces (JLS) // n/html/interfaces.html n/html/interfaces.html Getting started with APT // GettingStarted.html GettingStarted.html Mirror API // mirror/overview-summary.html mirror/overview-summary.html
32 32Georgiy KorneevJava Advanced / Новые возможности Java 5 Вопросы
Еще похожие презентации в нашем архиве:
© 2024 MyShared Inc.
All rights reserved.