Презентация Механизмы рефлексии. Нововведения Java5 онлайн
На нашем сайте вы можете скачать и просмотреть онлайн доклад-презентацию на тему Механизмы рефлексии. Нововведения Java5 абсолютно бесплатно. Урок-презентация на эту тему содержит всего 57 слайдов. Все материалы созданы в программе PowerPoint и имеют формат ppt или же pptx. Материалы и темы для презентаций взяты из открытых источников и загружены их авторами, за качество и достоверность информации в них администрация сайта не отвечает, все права принадлежат их создателям. Если вы нашли то, что искали, отблагодарите авторов - поделитесь ссылкой в социальных сетях, а наш сайт добавьте в закладки.
Презентации » Устройства и комплектующие » Механизмы рефлексии. Нововведения Java5
Оцените!
Оцените презентацию от 1 до 5 баллов!
- Тип файла:ppt / pptx (powerpoint)
- Всего слайдов:57 слайдов
- Для класса:1,2,3,4,5,6,7,8,9,10,11
- Размер файла:760.50 kB
- Просмотров:60
- Скачиваний:0
- Автор:неизвестен
Слайды и текст к этой презентации:
№5 слайд
![Участники механизма рефлексии](/documents_6/581e194cd91d7accb0f61a0349ce9206/img4.jpg)
Содержание слайда: Участники механизма рефлексии
Класс java.lang.Class
Класс является метаклассом по отношению к другим типам
Экземпляры класса Class описывают классы и интерфейсы выполняемого приложения
Методы класса Class позволяют исследовать содержимое описываемого класса и его свойства
Класс java.lang.ClassLoader
Реализует механизмы загрузки классов
№6 слайд
![Участники механизма рефлексии](/documents_6/581e194cd91d7accb0f61a0349ce9206/img5.jpg)
Содержание слайда: Участники механизма рефлексии
Пакет java.lang.reflect
Содержит ряд дополнительных и вспомогательных классов
Field
Описывает поле объекта
Method
Описывает метод объекта
Constructor
Описывает конструктор объекта
Modifier
Инкапсулирует работу с модификаторами
Array
Инкапсулирует работу с массивами
№7 слайд
![Получение представления](/documents_6/581e194cd91d7accb0f61a0349ce9206/img6.jpg)
Содержание слайда: Получение представления класса
Метод Class Object.getClass()
Возвращает ссылку на представление класса, экземпляром которого является объект
Псевдополе Object.class
Ссылка на представление указанного класса
Метод static Class Class.forName(...)
Возвращает ссылку на представление класса, полное имя которого указывается параметром типа String
№8 слайд
![Получение представления](/documents_6/581e194cd91d7accb0f61a0349ce9206/img7.jpg)
Содержание слайда: Получение представления класса
Метод Class[] Class.getClasses()
Возвращает ссылку на массив ссылок на объекты Class вложенных типов
Метод Class Class.getDeclaringClass()
Для вложенных типов возвращает ссылку на объект Class внешнего типа
Метод Class[] Class.getInterfaces()
Возвращает ссылки на описания интерфейсов, от которых наследует тип
Метод Class Class.getSuperclass()
Возвращает ссылку на описание родительского класса
№10 слайд
![Возможности класса Class](/documents_6/581e194cd91d7accb0f61a0349ce9206/img9.jpg)
Содержание слайда: Возможности класса Class
Загрузка класса в JVM по его имени
static Class forName(String name)
Определение вида типа
boolean isInterface()
boolean isLocalClass()
Получение родительских типов
Class getSuperclass()
Class[] getInterfaces()
Получение вложенных типов
Class[] getClasses()
Создание объекта
Object newInstance()
№11 слайд
![Возможности класса Class](/documents_6/581e194cd91d7accb0f61a0349ce9206/img10.jpg)
Содержание слайда: Возможности класса Class
Получение списка всех полей и конкретного поля по имени
Field[] getFields()
Field getField(...)
Получение списка всех методов и конкретного метода по имени и списку типов параметров
Method[] getMethods()
Method[] getMethod(...)
Получение списка всех конструкторов и конкретного конструктора по списку типов параметров
Constructor[] getConstructors()
Constructor getConstructor(...)
№12 слайд
![Передача параметров в методы](/documents_6/581e194cd91d7accb0f61a0349ce9206/img11.jpg)
Содержание слайда: Передача параметров
в методы
Поскольку на момент написания программы типы и даже количество параметров неизвестно, используется другой подход:
Ссылки на все параметры в порядке их следования помещаются в массив типа Object
Если параметр имеет примитивный тип, то в массив помещается ссылка на экземпляр класса-оболочки соответствующего типа, содержащий необходимое значение
Возвращается всегда тип Object
Для ссылочного типа используется приведение типа или рефлексивное исследование
Для примитивных типов возвращается ссылка на экземпляр класса-оболочки, содержащий возвращенное значение
№13 слайд
![Создание экземпляров классов](/documents_6/581e194cd91d7accb0f61a0349ce9206/img12.jpg)
Содержание слайда: Создание экземпляров классов
Метод Object Class.newInstance()
Возвращает ссылку на новый экземпляр класса, используется конструктор по умолчанию
Метод
Object Constructor.newInstance(
Object[] initArgs)
Возвращает ссылку на новый экземпляр класса, с использованием конструктора и указанными параметрами конструктора
№14 слайд
![Вызов методов Прямой вызов](/documents_6/581e194cd91d7accb0f61a0349ce9206/img13.jpg)
Содержание слайда: Вызов методов
Прямой вызов
Если на момент написания кода известен тип-предок загружаемого класса
Приведение типа и вызов метода
Вызов через экземпляр класса Method
Object Method.invoke(Object obj, Object[] args)
obj – ссылка объект, у которого должен быть вызван метод
принято передавать null, если метод статический
args – список параметров для вызова методов
№16 слайд
![Класс ClassLoader Экземпляры](/documents_6/581e194cd91d7accb0f61a0349ce9206/img15.jpg)
Содержание слайда: Класс ClassLoader
Экземпляры класса отвечают
за загрузку классов
в виртуальную машину
Это абстрактный класс,
не имеющий ни одного
абстрактного метода
Классы-наследники должны в каком-то смысле расширять возможности виртуальной машины по загрузке классов
Объекты загрузчиков образуют иерархию (родительский объект указывается как параметр защищённых конструкторов)
№17 слайд
![Основные методы класса](/documents_6/581e194cd91d7accb0f61a0349ce9206/img16.jpg)
Содержание слайда: Основные методы класса ClassLoader
public Class loadClass(String name)
Проверяет, не был ли класс загружен раньше
Вызывает аналогичный метод родительского объекта
Вызывает метод findClass(), чтобы найти класс
Не стоит переопределять этот метод
protected Class findClass(String name)
Ищет и загружает класс по имени специфическим для данного загрузчика способом
Этот метод и нужно переопределять
protected final Class defineClass(
String name, byte[] b, int off, int len)
Загружает класс из указанного набора байтов
№26 слайд
![Автоупаковка и автораспаковка](/documents_6/581e194cd91d7accb0f61a0349ce9206/img25.jpg)
Содержание слайда: Автоупаковка и автораспаковка
Автоупаковка – процесс автоматической инкапсуляции данных простого типа в экземпляр соответствующего ему класса-обертки в случаях, когда требуется значение ссылочного типа
Автораспаковка – процесс автоматического извлечения примитивного значения из объекта-упаковки в случаях, когда требуется значение примитивного типа
№27 слайд
![Особенности автоупаковки](/documents_6/581e194cd91d7accb0f61a0349ce9206/img26.jpg)
Содержание слайда: Особенности автоупаковки
Происходит при присваивании, вычислении выражений и при передаче параметров
Объекты создаются без использования ключевого слова new
Объекты создаются!
Вообще полагать, что примитивные типы
не нужны
Автоупаковка требует существенных
ресурсов
Злоупотреблять автоупаковкой
вообще не стоит!
№30 слайд
![Особенности переменного](/documents_6/581e194cd91d7accb0f61a0349ce9206/img29.jpg)
Содержание слайда: Особенности переменного количества аргументов
Внутри там все равно живет
массив…
Аргумент переменной длинны
в методе может быть только один
Аргумент переменной длинны должен быть последним в списке аргументов метода
В сочетании с перегрузкой методов способен приводить к изумительным ошибкам компиляции в виду неоднозначности кода
№32 слайд
![Параметризованные типы](/documents_6/581e194cd91d7accb0f61a0349ce9206/img31.jpg)
Содержание слайда: Параметризованные типы
Параметризованные типы (настраиваемые типы, generic types)
Позволяют создавать классы, интерфейсы и методы, в которых тип обрабатываемых данных задается как параметр
Позволяют создавать более компактный код, чем универсальные (обобщенные) типы, использующие ссылки типа Object
Обеспечивают автоматическую проверку и приведение типов
Позволяют создавать хороший, годный повторно используемый код
№36 слайд
![Ограниченные типы Ограничение](/documents_6/581e194cd91d7accb0f61a0349ce9206/img35.jpg)
Содержание слайда: Ограниченные типы
Ограничение типа позволяет использовать у ссылок методы и поля, доступные в типе-ограничителе
Типы, не наследующие от указанного, не могут быть использованы при создании объектов
Как имя типа может быть указан интерфейс!!!
Как имя типа может быть указан ранее введенный параметр!!!
№40 слайд
![Ряд особенностей Конструкторы](/documents_6/581e194cd91d7accb0f61a0349ce9206/img39.jpg)
Содержание слайда: Ряд особенностей
Конструкторы могут быть параметризованными (даже если сам класс таковым не является)
Интерфейсы могут быть параметризованными
Нельзя создавать объекты, используя типы-параметры
Статические члены класса не могут использовать его типы-параметры
Настраиваемый класс не может расширять класс Throwable
От настраиваемых типов можно наследовать, есть ряд особенностей
№42 слайд
![И как же это работает?](/documents_6/581e194cd91d7accb0f61a0349ce9206/img41.jpg)
Содержание слайда: И как же это работает?
Механизм стирания
В реальном байт-коде никаких настраиваемых типов в целом-то и нет…
Информация о настраиваемых типах удаляется на стадии компиляции
Именно компилятор осуществляет контроль безопасности приведения типов
А внутри после компиляции все те же «обобщенные» классы, явные приведения типов и прочее, и прочее…
№46 слайд
![Работа улучшенного цикла for](/documents_6/581e194cd91d7accb0f61a0349ce9206/img45.jpg)
Содержание слайда: Работа улучшенного цикла for
В каждом витке цикла «извлекается» очередной элемент агрегата
Ссылка на него (для ссылочных типов) или значение (для примитивных) помещается в переменную цикла
Тип переменной цикла должен
допускать присвоение
элементов агрегата
Цикл выполняется до тех пор,
пока не будут перебраны
все элементы агрегата
№48 слайд
![Особенности улучшенного цикла](/documents_6/581e194cd91d7accb0f61a0349ce9206/img47.jpg)
Содержание слайда: Особенности улучшенного
цикла for
По сути это внутренний итератор
Переменная цикла доступна только для чтения…
Порядок обхода в целом не определен…
Нет доступа к соседним элементам…
Мораль:
Область применения обобщенного цикла for «несколько уже», чем у «необобщенной» версии
Зато для этого класса задач синтаксис обобщенного цикла существенно удобнее
№49 слайд
![Внимание, вопрос! А кто же](/documents_6/581e194cd91d7accb0f61a0349ce9206/img48.jpg)
Содержание слайда: Внимание, вопрос!
А кто же управляет итерациями?
Агрегат обязан реализовывать интерфейс java.lang.Iterable<T>
Сей интерфейс содержит лишь один элемент
Iterator<T> iterator()
Данный, вроде бы знакомый, интерфейс, тоже претерпел некоторые изменения:
boolean hasNext()
void remove()
T next()
№53 слайд
![А теперь отличия от классики](/documents_6/581e194cd91d7accb0f61a0349ce9206/img52.jpg)
Содержание слайда: А теперь отличия от классики
Перечислимый тип – это класс!
Да к тому же имеет методы!
public static enumType[] values()
возвращает ссылку на массив ссылок на все константы перечислимого типа
public static enumType valueOf(String str)
возвращает константу перечислимого типа, имя которой соответствует указанной строке, иначе выбрасывает исключение
№57 слайд
![Дополнительные источники](/documents_6/581e194cd91d7accb0f61a0349ce9206/img56.jpg)
Содержание слайда: Дополнительные источники
Арнолд, К. Язык программирования Java [Текст] / Кен Арнолд, Джеймс Гослинг, Дэвид Холмс. – М. : Издательский дом «Вильямс», 2001. – 624 с.
Вязовик, Н.А. Программирование на Java. Курс лекций [Текст] / Н.А. Вязовик. – М. : Интернет-университет информационных технологий, 2003. – 592 с.
Эккель, Б. Философия Java [Текст] / Брюс Эккель. – СПб. : Питер, 2011. – 640 с.
Шилдт, Г. Java 2, v5.0 (Tiger). Новые возможности [Текст] / Герберт Шилдт. – СПб. : БХВ-Петербург, 2005. – 206 с.
JavaSE at a Glance [Электронный ресурс]. – Режим доступа: http://www.oracle.com/technetwork/java/javase/overview/index.html, дата доступа: 21.10.2011.
JavaSE APIs & Documentation [Электронный ресурс]. – Режим доступа: http://www.oracle.com/technetwork/java/javase/documentation/api-jsp-136079.html, дата доступа: 21.10.2011.
Скачать все slide презентации Механизмы рефлексии. Нововведения Java5 одним архивом:
Похожие презентации
-
Объектно-ориентированное программирование. Механизмы рефлексии. (Занятие 9)
-
Понятие подпрограмм. Механизм реализации подпрограмм с помощью процедур и функций
-
Рефлексия типов и программирование с использованием атрибутов
-
Механизм событий
-
Устройство с подъемным механизмом, основная задача которого – робофутбол
-
Механизмы раннего и позднего связывания. Статические методы
-
Механизм расширения языка
-
Приведение типов. Механизм исключений. Задача на разбор командной строки
-
Remote Method Invocation. Порядок разработки и запуска RMI-приложений. Нововведения в Java 5
-
Многопоточность. Возможности и преимущества многопоточности. Способы реализации. Механизмы синхронизации. (Лекция 7)