+ All Categories
Home > Documents > Новые возможности Java 5

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

Date post: 02-Jan-2016
Category:
Upload: xander-mcmillan
View: 71 times
Download: 1 times
Share this document with a friend
Description:
Новые возможности Java 5. Java Advanced. Содержание. Перечисления Метаданные Другие возможности Заключение. Часть 1. Перечисления. Как было раньше. Пример public final static int NEW = 1; public final static int RUNNING = 2; public final static int BLOCKED = 3; - PowerPoint PPT Presentation
32
Новые возможности Java 5 Java Advanced
Transcript
Page 1: Новые возможности  Java 5

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

Java Advanced

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

Java Advanced / Новые возможности Java 5 2Georgiy Korneev

Содержание

ПеречисленияМетаданныеДругие возможностиЗаключение

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

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

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

Java Advanced / Новые возможности Java 5 4Georgiy Korneev

Как было раньше

Примерpublic final static int NEW = 1;

public final static int RUNNING = 2;

public final static int BLOCKED = 3;

public final static int FINISHED = 4;

Проблемы Нет проверки типов Нет проверки уникальности Плохая расширяемость Малая информативность

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

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

Перечислимый тип

Примерpublic enum State {

NEW,

RUNNING,

BLOCKED,

FINISHED

}

Каждое перечисление является независимой областью видимости

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

Java Advanced / Новые возможности Java 5 6Georgiy Korneev

Идентификация переменных

Классом Экземплярами Именами Номерами

Имя Идентификатор экземпляра Метод name()

Номер Может быть передан в конструктор экземпляра Метод ordinal()

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

Java Advanced / Новые возможности Java 5 7Georgiy Korneev

Перечисления как классы

Перечисление может иметь Закрытые конструкторы Поля Методы Абстрактные методы, если они определены в

каждом экземпляре

Перечисление может реализовывать интерфейсы

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

Java Advanced / Новые возможности Java 5 8Georgiy Korneev

Пример: меры длины

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

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

Java Advanced / Новые возможности Java 5 9Georgiy Korneev

Методы работы с перечислениями

Класс Enum – базовый для перечислений name() – имя ordinal() – номер valueOf(Class, name) – экземпляр по номеру

Дополнительные values() – все экземпляры valueOf(name) – экземпляр по имени

Методы классов isEnum() – является ли перечислением getEnumConstants() –все экземпляры

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

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

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

Java Advanced / Новые возможности Java 5 11Georgiy Korneev

Метаданные и аннотации

Метаданные – информация, непосредственно не влияющая на выполнение программы

Аннотации – тип метаданных в Java

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

Java Advanced / Новые возможности Java 5 12Georgiy Korneev

Пример определения аннотации

public @interface RequestForEnhancement {

int id();

String synopsis();

String engineer() default "[unassigned]";

String date() default "[unimplemented]";

}

Маркер аннотации

Определения полей

Значения по умолчанию

Имя аннотации

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

Java Advanced / Новые возможности Java 5 13Georgiy Korneev

Пример использования аннотации

@RequestForEnhancement(

id = 2868724,

synopsis = "Enable time-travel",

engineer = "Mr. Peabody",

date = "4/1/3007"

)

public static void travelThroughTime(

Date destination)

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

Java Advanced / Новые возможности Java 5 14Georgiy Korneev

Типы аннотаций

ОбыкновеннаяМаркерная – без параметров

Может использоваться без скобок

Одиночная – с одним параметром Параметр должен называться value() Может инициализироваться без указания

имени параметра

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

Java Advanced / Новые возможности Java 5 15Georgiy Korneev

Типы параметров аннотаций

Возможные типы Примитивные типы String Class Перечислимый тип Аннотация Массив вышеперечисленного

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

Java Advanced / Новые возможности Java 5 16Georgiy Korneev

Время жизни аннотации

Аннотация @Retention(RetentionPolicy)Возможные значения

SOURCE – до компиляции CLASS – в класс файле RUNTIME – во время выполнения

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

Java Advanced / Новые возможности Java 5 17Georgiy Korneev

Применимость аннотации

Аннотация @Target(ElementType[])Возможные значения

TYPE – любой тип FIELD – поле класса METHOD – метод класса CONSTRUCTOR – конструктор класса PARAMETER – параметр метода LOCAL_VARIABLE – локальная переменная ANNOTATION_TYPE – аннотация PACKAGE – пакет

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

Java Advanced / Новые возможности Java 5 18Georgiy Korneev

Наследование аннотаций

Аннотация @InheritedАннотация объявленная @Inherited

автоматически наследуются при переопределении метода / класса

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

Java Advanced / Новые возможности Java 5 19Georgiy Korneev

Аннотации и документация

Аннотация @DocumentedАннотация объявленная @Documented

попадает в JavaDoc аннотированного документа

Применяется для аннотаций, изменяющих поведение

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

Java Advanced / Новые возможности Java 5 20Georgiy Korneev

Аннотация @SuppressWarnings

Подавляет генерацию предостережений указанного тип при компиляции аннотированного элемента

Пример@SuppressWarnings("unchecked")

public T<E> toArray() {

return (T<E>[]) list.toArray(new T[]);

}

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

Java Advanced / Новые возможности Java 5 21Georgiy Korneev

Аннотация @Deprecated

Помечает метод как deprecatedПример

@Deprecated

public final void stop() {

}

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

Java Advanced / Новые возможности Java 5 22Georgiy Korneev

Аннотации во время выполнения

Интерфейс AnnotatedElementМетоды

isAnnotationPresent(Class) – проверяет наличие аннотации данного типа

getAnnotation(Class) – возвращает аннотацию данного типа.

getAnnotations() – все аннотации getDeclaredAnnotations() – непосредственно

объявленные аннотации

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

Java Advanced / Новые возможности Java 5 23Georgiy Korneev

Пример: тестирование (1)

Аннотация@Retention(RetentionPolicy.RUNTIME)

@Target(ElementType.METHOD)

public @interface Test { }

Пример использованияpublic class SimpleTest {

@Test public void testXXX();

@Test public void testYYY();

}

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

Java Advanced / Новые возможности Java 5 24Georgiy Korneev

Пример: тестирование (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()); } }}

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

Java Advanced / Новые возможности Java 5 25Georgiy Korneev

APT и Mirror API

Annotation Processing Tool – позволяет работать с аннотациями до компиляции программы

Mirror API – позволяет работать с информацией о классах до их компиляции

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

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

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

Java Advanced / Новые возможности Java 5 27Georgiy Korneev

Переменное число аргументов

Методы с переменным числом аргументов method(args, Type … name) -- сигнатура method – имя метода args – список обычных аргументов Type – тип дополнительных аргументов name – имя формального параметра

Формальный параметр имеет тип Type[]

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

Java Advanced / Новые возможности Java 5 28Georgiy Korneev

Статические импорты

Статические члены могут быть импортированыimport static Math.PI;

angle = PI / 2

Статические метод может быть импортированimport static Math.cos()

cos(angle)

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

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

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

Java Advanced / Новые возможности Java 5 30Georgiy Korneev

Ссылки (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

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

Java Advanced / Новые возможности Java 5 31Georgiy Korneev

Ссылки (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

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

Java Advanced / Новые возможности Java 5 32Georgiy Korneev

Вопросы


Recommended