Языки программирования
<<  История развития языков программирования Java Advanced  >>
Java Advanced
Java Advanced
Структура
Структура
Reflection
Reflection
Введение
Введение
Информация о типе
Информация о типе
Типы типов
Типы типов
Получение информации о типе
Получение информации о типе
Общая информация о классе
Общая информация о классе
Место определения класса
Место определения класса
Приведение классов
Приведение классов
Структура класса
Структура класса
Информация о члене класса
Информация о члене класса
Модификаторы
Модификаторы
Поля
Поля
Свойства полей
Свойства полей
Методы
Методы
Свойства методов
Свойства методов
Конструкторы
Конструкторы
Свойства конструкторов
Свойства конструкторов
Классы и интерфейсы
Классы и интерфейсы
Доступ к закрытым членам
Доступ к закрытым членам
Листинг класса
Листинг класса
Создание экземпляра
Создание экземпляра
Массивы
Массивы
Операции с массивами
Операции с массивами
Массивы как типы
Массивы как типы
Имена для типов
Имена для типов
Загрузчики классов
Загрузчики классов
Методы loadClass
Методы loadClass
Дерево загрузчиков
Дерево загрузчиков
Дополнительные возможности
Дополнительные возможности
Загрузчики и классы
Загрузчики и классы
Реализации загрузчиков
Реализации загрузчиков
Загрузка класса
Загрузка класса
Proxy
Proxy
Механизм
Механизм
Object proxy
Object proxy
Методы Proxy
Методы Proxy
Профайлер
Профайлер
Конструктор
Конструктор
Основной метод
Основной метод
Public static
Public static
Заключение
Заключение
Экземпляры классов
Экземпляры классов
Ссылки
Ссылки
Вопросы
Вопросы

Презентация на тему: «Java Advanced». Автор: Geo. Файл: «Java Advanced.ppt». Размер zip-архива: 155 КБ.

Java Advanced

содержание презентации «Java Advanced.ppt»
СлайдТекст
1 Java Advanced

Java Advanced

Reflection

2 Структура

Структура

Содержание

Введение Структура класса Массивы Загрузчики классов Proxy Заключение

Java Advanced / Reflection

3 Reflection

Reflection

Библиотека, позволяющая оперировать информацией о типах во время выполнения Пакеты java.lang java.lang.reflect

Java Advanced / Reflection

4 Введение

Введение

Часть 1

5 Информация о типе

Информация о типе

Информация о типах классом Class Предоставляемая информация Структура класса Структура наследования Проверки времени выполнения …

Java Advanced / Reflection

6 Типы типов

Типы типов

Для определения типов служат методы вида is*()

Аннотация

Annotation

Массив

Array

Примитивный

Primitive

Перечисление

Enum

Интерфейс

Interface

Класс

*Class

Анонимный класс

AnonymousClass

Локальный класс

LocalClass

Класс-член

MemberClass

Java Advanced / Reflection

7 Получение информации о типе

Получение информации о типе

Во время исполнения object.getClass() Во время компиляции type.class Предопределенные Wrapper.TYPE

Java Advanced / Reflection

8 Общая информация о классе

Общая информация о классе

Имя класса getCanonicalName() – каноническое имя getName() – полное имя getSimpleName() – простое имя Структура классов getSuperClass() – предок getInterfaces() – реализуемые интерфейсы Модификаторы getModifiers() – модификаторы

Java Advanced / Reflection

9 Место определения класса

Место определения класса

Методы получения места, в котором определен класс

Тип класса

Метод

Верхнего уровня

getPackage()

Вложенный

getDeclaredClass()

В конструктор

getEnclosingConstructor()

В метод

getEnclosingMethod()

Java Advanced / Reflection

10 Приведение классов

Приведение классов

Приведение cast(object) – привести ссылку к типу Определение возможности приведения isAssignableFrom(class) – класса isInstance(object) – объекта

Java Advanced / Reflection

11 Структура класса

Структура класса

Часть 2

12 Информация о члене класса

Информация о члене класса

Интерфейс Member Методы getDeclaringClass() – класс, в котором определен getName() – имя члена getModifiers() – модификаторы

Java Advanced / Reflection

13 Модификаторы

Модификаторы

Класс Modifiers

Константа

Метод

Модификатор

ABSTRACT

isAbstract

abstract

FINAL

isFinal

final

INTERFACE

isInterface

interface

NATIVE

isNative

native

PRIVATE

isPrivate

private

PROTECTED

isProtected

protected

PUBLIC

isPublic

public

STATIC

isStatic

static

STRICT

isStrict

strictfp

SYNHRONIZED

isSynhronized

synhronized

TRANSIENT

isTransient

transient

VOLATILE

isVolatile

volatile

Java Advanced / Reflection

14 Поля

Поля

Открытые getFields() – все поля getField(name) – конкретное поле Все getDeclaredFields() – все поля getDeclaredField(name) – конкретное поле Исключения NoSuchFieldException

Java Advanced / Reflection

15 Свойства полей

Свойства полей

Класс Field Информация getName() – имя поля getType() – тип значения Чтение значения get(object) – ссылки get*(object) – значения примитивного типа Запись значения set(object, value) – ссылки set*(object, value) – значения примитивного типа

Java Advanced / Reflection

16 Методы

Методы

Открытые getMethods() – все методы getMethod(name, Class… parameters) – конкретный метод Все getDeclaredMethods() – все методы getDeclaredMethod(name , Class… parameters) – конкретный метод Исключения NoSuchMethodException

Java Advanced / Reflection

17 Свойства методов

Свойства методов

Класс Method Сигнатура метода getName() – имя метода getParameterTypes() – параметры метода Другая информация getExceptionTypes() – возможные исключения getReturnType() – тип возвращаемого значения Вызов метода invoke(Object object, Object …args) – вызвать метод с указанными аргументами

Java Advanced / Reflection

18 Конструкторы

Конструкторы

Открытые getConstructor() – все конструкторы getConstructor(Class… parameters) – конкретный конструктор Все getDeclaredConstructor() – все конструкторы getDeclaredConstructor(name , Class… parameters) – конкретный конструктор Исключения NoSuchMethodException

Java Advanced / Reflection

19 Свойства конструкторов

Свойства конструкторов

Класс Constructor Информация о конструкторе getParameterTypes() – параметры конструктора getExceptionTypes() – возможные исключения Создание объекта newInstance(Object … args) – создать новый объект class.newInstance() – создать новый объект используя конструктор по умолчанию

Java Advanced / Reflection

20 Классы и интерфейсы

Классы и интерфейсы

Открытые getClasses() – все классы и интерфейсы Все getDeclaredClasses() – все классы и интерфейсы

Java Advanced / Reflection

21 Доступ к закрытым членам

Доступ к закрытым членам

По умолчанию доступ к закрытым членам запрещен ? IllegalAccessException Все члены extends AccessibleObject setAccessible(boolean) – запросить доступ isAccessible() – проверить доступ

Java Advanced / Reflection

22 Листинг класса

Листинг класса

Пример: листинг класса

Class c = ArrayList.class; for (Field m : c.getDeclaredFields()) { System.out.println(m); } for (Constructor m : c.getDeclaredConstructors()) { System.out.println(m); } for (Method m : c.getDeclaredMethods()) { System.out.println(m); }

Java Advanced / Reflection

23 Создание экземпляра

Создание экземпляра

Пример: создание экземпляра

// Получение класса Class clazz = Integer.class; // Получение конструктора Constructor c = clazz.getConstructor(int.class); // Создание экземпляра Integer i = (Integer) c.newInstance(100); // Проверка System.out.println(i);

Java Advanced / Reflection

24 Массивы

Массивы

Часть 3

25 Операции с массивами

Операции с массивами

Класс Array Создание массива заданного типа newInstance(Class, length) – линейного newInstance(Class, dims[]) – “кубического” Чтение значения из массива get(array, index) – ссылки get*(array, index) – значения примитивного типа Запись значения в массив set(array, index, value) – ссылки set*(array, index , value) – значения примитивного типа

Java Advanced / Reflection

26 Массивы как типы

Массивы как типы

Имя типа массива [имя_типа_элемента Методы isArray() – является ли массивом getComponentType() – тип элемента массива

Java Advanced / Reflection

27 Имена для типов

Имена для типов

Имена классов типов в массиве кодируются специальным образом

class

Lclass;

boolean

Z

byte

B

char

C

double

D

float

F

int

I

long

J

short

S

Java Advanced / Reflection

28 Загрузчики классов

Загрузчики классов

Часть 4

29 Методы loadClass

Методы loadClass

Загрузчики классов

Позволяют загружать и определять новые классы Класс ClassLoader Методы loadClass(name, resolve?) – загружает класс по имени findLoadedClass(name) – найти уже загруженный класс resolveClass(class) – загружает библиотеки

Java Advanced / Reflection

30 Дерево загрузчиков

Дерево загрузчиков

Загрузчики образуют дерево Загрузчики в разных ветвях могут загрузить разные классы с одним полным именем

Java Advanced / Reflection

31 Дополнительные возможности

Дополнительные возможности

Получения родителя getParent() Загрузка ресурсов URL getResouce(String name) – определение местоположения ресурса по имени getResouceAsStream(String name) – чтение ресурса по имени

Java Advanced / Reflection

32 Загрузчики и классы

Загрузчики и классы

Получение загрузчика getClassLoader() – кто загрузил класс Thread.getContextClassLoader() – контекстный загрузчик “Прямая” загрузка класса Class.forName(name)

Java Advanced / Reflection

33 Реализации загрузчиков

Реализации загрузчиков

Класс URLClassLoader Загружает классы из нескольких мест, заданных URL

Java Advanced / Reflection

34 Загрузка класса

Загрузка класса

Пример: загрузка класса

URL jar = new URL("file://."); className = "Test"; ClassLoader cl = new URLClassLoader(new URL[]{jar}); Class c = cl.loadClass(className); Method m = c.getMethod("main", String[].class); m.invoke(null, (Object) new String[]{"hello"});

Java Advanced / Reflection

35 Proxy

Proxy

Часть 5

36 Механизм

Механизм

Proxy

Механизм, позволяющий создавать фиктивные классы, реализующие требуемые интерфейсы Класс Proxy

Java Advanced / Reflection

37 Object proxy

Object proxy

Класс InvocationHandler

Ему делегируются вызовы, совершенные для Proxy Методы invoke(Object proxy, Method, Object[] args) – уведомляет о вызове метода

Java Advanced / Reflection

38 Методы Proxy

Методы Proxy

Создание экземпляра Proxy newProxyInstance(ClassLoader, Class[] interfaces, InvocationHandler) Получение класса Proxy getProxyClass(ClassLoader, Class[] interfaces) Проверка класса isProxyClass(Class)

Java Advanced / Reflection

39 Профайлер

Профайлер

Пример: профайлер (1)

Класс public class Profiler implements InvocationHandler { // Экземпляр Proxy private final Object instance; // Реальная реализация private final Object impl; … }

Java Advanced / Reflection

40 Конструктор

Конструктор

Пример: профайлер (2)

Конструктор public Profiler(Class[] i8s, Object impl) { this.impl = impl; instance = Proxy.newProxyInstance(null, i8s, this); } Создание экземпляра public Object getInstance() { return instance; }

Java Advanced / Reflection

41 Основной метод

Основной метод

Пример: профайлер (3)

Основной метод public Object invoke( Object proxy, Method method, Object[] args ) throws IllegalAccessException, InvocationTargetException { System.out.println("Calling " + method + " on " + impl); return method.invoke(impl, args); }

Java Advanced / Reflection

42 Public static

Public static

Пример: профайлер (4)

Применение public static void main(String[] args) { Integer i1 = new Integer(3); Profiler profiler = new Profiler( new Class[]{Comparable.class}, i1); Comparable i2 = (Comparable) profiler.getInstance(); System.out.println(i2.compareTo(i1)); }

Java Advanced / Reflection

43 Заключение

Заключение

Часть 6

44 Экземпляры классов

Экземпляры классов

Выводы

Reflection позволяет Анализировать классы по время исполнения Загружать классы по имени Создавать экземпляры классов по имени Вызывать метод классов по имени Оперировать значениями полей по имени Создавать и оперировать с массивами по типу элемента Создавать proxy для интерфейсов

Java Advanced / Reflection

45 Ссылки

Ссылки

Reflection (Guide) // http://java.sun.com/j2se/1.5.0/docs/guide/reflection/index.html Reflection API Code Samples // http://java.sun.com/developer/codesamples/refl.html Using Java Reflection // http://java.sun.com/developer/technicalArticles/ALT/Reflection/index.html The Reflection API (tutorial) // http://java.sun.com/docs/books/tutorial/reflect/index.html

Java Advanced / Reflection

46 Вопросы

Вопросы

Java Advanced / Reflection

«Java Advanced»
http://900igr.net/prezentacija/informatika/java-advanced-62433.html
cсылка на страницу
Урок

Информатика

130 тем
Слайды