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

Презентация:



Advertisements
Похожие презентации
Новые возможности Java 5 Java Advanced. 2Georgiy KorneevJava Advanced / Новые возможности Java 5 Краткое содержание 1.Что такое generic 2.Реализация Generic.
Advertisements

Новые возможности Java 5 Java Advanced. 2Georgiy KorneevJava Advanced / Новые возможности Java 5 Краткое содержание 1.Generics 2.Реализация Generics 3.Generics.
Javadoc Java Advanced. 2Georgiy KorneevJava Advanced / Javadoc Содержание 1.Структура Javadoc 2.Блочные тэги 3.Строчные тэги 4.Применение Javadoc 5.Компиляция.
Учебный курс Объектно-ориентированный анализ и программирование Лекция 7 Методы как средство реализации операций Лекции читает кандидат технических наук.
Синтаксис языка Java. Символы и синтаксис Перевод строчки эквивалентен пробелу Регистр в именах различается.
1 © Luxoft Training 2012 Java: расширенные вопросы Модуль #8.
1 © Luxoft Training 2013 Модуль 8 Введение Задачи аннотаций Стандартные аннотации Создание собственных аннотаций 8-1 Аннотации.
Многопоточное программирование на Java Java Advanced.
Reflection Java Advanced. 2Georgiy KorneevJava Advanced / Reflection Содержание Введение Структура класса Массивы Загрузчики классов Proxy Заключение.
Многопоточное программирование на Java Java Advanced.
Изучение динамического определения типов. Класс Class. Динамическая загрузка и инстанцирование классов. В Java вся информация о классе хранится в специальном.
1 Классы в Java Ключевое слово class означает: Я говорю тебе, как выглядит новый тип объекта. Класс является базовым элементом объектно-ориентированного.
Java, каф.ОСУ, АВТФ1 Определение классов и методов Java- программа состоит из объектов различных классов, взаимодействующих друг с другом. Каждое.
САОД кафедра ОСУ 1 Основные абстрактные типы данных Схема процесса создания программ для решения прикладных задач ВУ.
Saint Petersburg, 2011 Java Lecture #06 Exceptions.
Создание программ на Java Управляющие структуры языка, объявление классов и методов, компиляция и запуск программ.
b5_java_s4
Классы в С#. Перечисления С# Перечисление задает конечное множество возможных значений, которые могут получать объекты класса перечисление. [атрибуты][модификаторы]
Перегрузка операторов x = a + b результат 1-й операнд2-й операнд оператор По количеству операндов операторы делятся на: унарные (один операнд) бинарные.
1 Java 6. ИНТЕРФЕЙСЫ И ВНУТРЕННИЕ КЛАССЫ. 2 Интерфейсы Не являются классами Ни один из объявленных методов не может быть реализован внутри интерфейса.
Транксрипт:

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

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

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

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; Проблемы Нет проверки типов Нет проверки уникальности Плохая расширяемость Малая информативность

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

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

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

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; }

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

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

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

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

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

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

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

16Georgiy KorneevJava Advanced / Новые возможности Java 5 Время жизни аннотации Возможные значения SOURCE – до компиляции CLASS – в класс файле RUNTIME – во время выполнения

17Georgiy KorneevJava Advanced / Новые возможности Java 5 Применимость аннотации Возможные значения TYPE – любой тип FIELD – поле класса METHOD – метод класса CONSTRUCTOR – конструктор класса PARAMETER – параметр метода LOCAL_VARIABLE – локальная переменная ANNOTATION_TYPE – аннотация PACKAGE – пакет

18Georgiy KorneevJava Advanced / Новые возможности Java 5 Наследование аннотаций Аннотация автоматически наследуются при переопределении метода / класса

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

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

21Georgiy KorneevJava Advanced / Новые возможности Java 5 Помечает метод как deprecated public final void stop() { … }

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

23Georgiy KorneevJava Advanced / Новые возможности Java 5 Пример: тестирование Test { } Пример использования public class SimpleTest public void public void testYYY(); }

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()); }

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

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

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

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

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

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

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

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