Язык программирования JAVA

Содержание

Слайд 2

Обобщенное программирование

Обобщенное программирование

Слайд 3

Обобщенное программирование

Механизм Generics позволяет абстрагироваться от типов данных
Типичный пример – работа с

Обобщенное программирование Механизм Generics позволяет абстрагироваться от типов данных Типичный пример –
коллекциями

List myIntList = new LinkedList(); // 1
myIntList.add(new Integer(0)); // 2
Integer x = (Integer) myIntList.iterator().next(); // 3

Слайд 4

Обобщенное программирование

В Java 5 вы можете параметризировать классы

List myIntList = new LinkedList();

Обобщенное программирование В Java 5 вы можете параметризировать классы List myIntList =
// 1
myIntList.add(new Integer(0)); // 2
Integer x = myIntList.iterator().next(); // 3

В интерфейс List передается параметр – ТИП помещаемых данных

Слайд 5

Определение простого Generic класса

Отличие от обычного класса состоит в параметре в угловых

Определение простого Generic класса Отличие от обычного класса состоит в параметре в
скобках

public interface List {
void add(E x);
Iterator iterator();
}
public interface Iterator{
E next();
boolean hasNext();
}

Слайд 6

Наследование и Generic классы

Правилен ли этот код?

List ls = new ArrayList(); //

Наследование и Generic классы Правилен ли этот код? List ls = new
1
List lo = ls; // 2

List ls = new ArrayList(); // 1
List lo = ls; // 2

При использовании Generic классов с параметрами, входящими в иерархию, необходимо соблюдать осторожность.

А этот?

Слайд 7

Маски

При задании типов-параметров можно указывать маски типов, допустимых для класса Generic

void printCollection(Collection

Маски При задании типов-параметров можно указывать маски типов, допустимых для класса Generic
c) {
for (Object e : c) {
System.out.println(e);
} }

public void drawAll(List shapes) {
...
}

public void drawAll(List shapes) {
...
}

Слайд 8

Generic методы

Можно добавлять параметры только к методам класса

static void fromArrayToCollection(T[] a,

Generic методы Можно добавлять параметры только к методам класса static void fromArrayToCollection(T[]
Collection c) {
for (T o : a) {
c.add(o);
} }

static void fromArrayToCollection(T[] a, Collection c) {
for (T o : a) {
c.add(o);
} }

Collection co = new ArrayList();
String[] sa = new String[100];
Collection cs = new ArrayList();
fromArrayToCollection(sa, cs); // T будет типа String
fromArrayToCollection(sa, co); // T будет типа Object

Слайд 9

Варианты использования Generics

interface Transformer{
public OT transformData(IT data);
public addInputFilter (InputFiter

Варианты использования Generics interface Transformer { public OT transformData(IT data); public addInputFilter
filter);
public addOutputFilter (OutputFilter filter);
}
interface InputFilter{
T doFilter(T data)
}
interface OutputFilter{
T doFilter(T data)
}

Слайд 10

Аннотации

Аннотации

Слайд 11

Что такое аннотации

Аннотация – дополнительная информация о методе или классе
Аннотации предназначены для

Что такое аннотации Аннотация – дополнительная информация о методе или классе Аннотации
обработки сторонними утилитами (компилятор, IDE, среда выполнения)
С помощью аннотаций можно генерировать дополнительные файлы (документация, маппинг, дескрипторы развертывания)

Слайд 12

Зачем использовать аннотации?

«Декларативный» стиль программирования
Нет необходимости поддерживать сторонние файлы в актуальном состоянии

Зачем использовать аннотации? «Декларативный» стиль программирования Нет необходимости поддерживать сторонние файлы в
– все хранится в исходном коде

Слайд 13

Создание аннотаций

Похоже на объявление интерфейса
Необходимо перед названием поставить знак “@”
Каждое объявление метода

Создание аннотаций Похоже на объявление интерфейса Необходимо перед названием поставить знак “@”
определяет атрибут аннотации
Объявления методов не должны иметь параметров
Возвращаемые типы методов должны быть примитивами, String, Class, enum, аннотацией или массивом
Возможно объявлять значения по умолчанию

Слайд 14

Создание аннотаций

@Retention(value = RetentionPolicy.RUNTIME)
@Target(value = ElementType.METHOD)
public @interface PropertySettings {
String description() default

Создание аннотаций @Retention(value = RetentionPolicy.RUNTIME) @Target(value = ElementType.METHOD) public @interface PropertySettings {
"";
int order() default 0;
String displayName() default "";
boolean required() default false;
String defaultValue() default "";
}

Слайд 15

Использование аннотаций

После объявления аннотации она может быть использована на уровне описания
Класса
Метода
Свойства
Аннотация предшествует

Использование аннотаций После объявления аннотации она может быть использована на уровне описания
другим модификаторам

Слайд 16

Использование аннотаций

@PropertySettings(order = 2, displayName = "Private Key Password")
public void setPrivateKeyPassword(String password)

Использование аннотаций @PropertySettings(order = 2, displayName = "Private Key Password") public void
{
adapter.setPrivatePassword(password);
}

Слайд 17

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

Маркер
Аннотация с единственным значением
Обычная аннотация (был рассмотрен выше)

Типы аннотаций Маркер Аннотация с единственным значением Обычная аннотация (был рассмотрен выше)

Слайд 18

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

Аннотация без элементов
Объявление

public @interface DatabaseDatasource {
}

Использование

@DatabaseDatasource
public void setDbName(String name) {
...
}

Маркер-аннотация Аннотация без элементов Объявление public @interface DatabaseDatasource { } Использование @DatabaseDatasource

Слайд 19

Аннотация с единственным значением

Аннотация, в которой может содержаться только одно значение
Элемент должен

Аннотация с единственным значением Аннотация, в которой может содержаться только одно значение
называться «value»
Объявление

public @interface DatabaseDatasource {
String value()
}

Использование

@DatabaseDatasource (“Oracle”)
public void setDbName(String name) {
...
}

Слайд 20

Мета-аннотации

@Retention
Как долго аннотация остается в коде
SOURCE
CLASS (по умолчанию)
RUNTIME
@Target
Ограничение использования
TYPE
FIELD
METHOD

Мета-аннотации @Retention Как долго аннотация остается в коде SOURCE CLASS (по умолчанию)

Слайд 21

Получение значений аннотаций

Маркер

С единственным значением

boolean isDataSource = MyClass.class.isAnnotationPresent (DatabaseDatasource.class)

String dataSourceName = MyClass.class.getAnnotation(DatabaseDatasource.class).value()

Обычная

Получение значений аннотаций Маркер С единственным значением boolean isDataSource = MyClass.class.isAnnotationPresent (DatabaseDatasource.class)
аннотация

PropertySettings propSettings = writeMethod.getAnnotation(PropertySettings.class);
prp.setOrder(propSettings.order());
prp.setDisplayName(propSettings.displayName());

Имя файла: Язык-программирования-JAVA.pptx
Количество просмотров: 489
Количество скачиваний: 4