🗊Презентация Механизмы рефлексии. Нововведения Java5

Нажмите для полного просмотра!
Механизмы рефлексии. Нововведения Java5, слайд №1Механизмы рефлексии. Нововведения Java5, слайд №2Механизмы рефлексии. Нововведения Java5, слайд №3Механизмы рефлексии. Нововведения Java5, слайд №4Механизмы рефлексии. Нововведения Java5, слайд №5Механизмы рефлексии. Нововведения Java5, слайд №6Механизмы рефлексии. Нововведения Java5, слайд №7Механизмы рефлексии. Нововведения Java5, слайд №8Механизмы рефлексии. Нововведения Java5, слайд №9Механизмы рефлексии. Нововведения Java5, слайд №10Механизмы рефлексии. Нововведения Java5, слайд №11Механизмы рефлексии. Нововведения Java5, слайд №12Механизмы рефлексии. Нововведения Java5, слайд №13Механизмы рефлексии. Нововведения Java5, слайд №14Механизмы рефлексии. Нововведения Java5, слайд №15Механизмы рефлексии. Нововведения Java5, слайд №16Механизмы рефлексии. Нововведения Java5, слайд №17Механизмы рефлексии. Нововведения Java5, слайд №18Механизмы рефлексии. Нововведения Java5, слайд №19Механизмы рефлексии. Нововведения Java5, слайд №20Механизмы рефлексии. Нововведения Java5, слайд №21Механизмы рефлексии. Нововведения Java5, слайд №22Механизмы рефлексии. Нововведения Java5, слайд №23Механизмы рефлексии. Нововведения Java5, слайд №24Механизмы рефлексии. Нововведения Java5, слайд №25Механизмы рефлексии. Нововведения Java5, слайд №26Механизмы рефлексии. Нововведения Java5, слайд №27Механизмы рефлексии. Нововведения Java5, слайд №28Механизмы рефлексии. Нововведения Java5, слайд №29Механизмы рефлексии. Нововведения Java5, слайд №30Механизмы рефлексии. Нововведения Java5, слайд №31Механизмы рефлексии. Нововведения Java5, слайд №32Механизмы рефлексии. Нововведения Java5, слайд №33Механизмы рефлексии. Нововведения Java5, слайд №34Механизмы рефлексии. Нововведения Java5, слайд №35Механизмы рефлексии. Нововведения Java5, слайд №36Механизмы рефлексии. Нововведения Java5, слайд №37Механизмы рефлексии. Нововведения Java5, слайд №38Механизмы рефлексии. Нововведения Java5, слайд №39Механизмы рефлексии. Нововведения Java5, слайд №40Механизмы рефлексии. Нововведения Java5, слайд №41Механизмы рефлексии. Нововведения Java5, слайд №42Механизмы рефлексии. Нововведения Java5, слайд №43Механизмы рефлексии. Нововведения Java5, слайд №44Механизмы рефлексии. Нововведения Java5, слайд №45Механизмы рефлексии. Нововведения Java5, слайд №46Механизмы рефлексии. Нововведения Java5, слайд №47Механизмы рефлексии. Нововведения Java5, слайд №48Механизмы рефлексии. Нововведения Java5, слайд №49Механизмы рефлексии. Нововведения Java5, слайд №50Механизмы рефлексии. Нововведения Java5, слайд №51Механизмы рефлексии. Нововведения Java5, слайд №52Механизмы рефлексии. Нововведения Java5, слайд №53Механизмы рефлексии. Нововведения Java5, слайд №54Механизмы рефлексии. Нововведения Java5, слайд №55Механизмы рефлексии. Нововведения Java5, слайд №56Механизмы рефлексии. Нововведения Java5, слайд №57

Содержание

Вы можете ознакомиться и скачать презентацию на тему Механизмы рефлексии. Нововведения Java5. Доклад-сообщение содержит 57 слайдов. Презентации для любого класса можно скачать бесплатно. Если материал и наш сайт презентаций Mypresentation Вам понравились – поделитесь им с друзьями с помощью социальных кнопок и добавьте в закладки в своем браузере.

Слайды и текст этой презентации


Слайд 1





Механизмы рефлексии
Описание слайда:
Механизмы рефлексии

Слайд 2





План лекции
Рефлексия и её возможности
Участники механизма рефлексии
Получение и работа со ссылкой на описание класса
Вызов конструкторов и методов
Управление загрузкой классов
Описание слайда:
План лекции Рефлексия и её возможности Участники механизма рефлексии Получение и работа со ссылкой на описание класса Вызов конструкторов и методов Управление загрузкой классов

Слайд 3





Понятие рефлексии
Рефлексия (от  лат. Reflexio
 – обращение назад) – 
обращение субъекта 
на себя самого, на свое 
знание или на свое 
собственное состояние
Рефлексия в Java – возможность программы анализировать саму себя, взаимодействуя с виртуальной машиной Java (JVM)
Описание слайда:
Понятие рефлексии Рефлексия (от лат. Reflexio – обращение назад) – обращение субъекта на себя самого, на свое знание или на свое собственное состояние Рефлексия в Java – возможность программы анализировать саму себя, взаимодействуя с виртуальной машиной Java (JVM)

Слайд 4





Возможности механизма рефлексии
Загрузка типов во время исполнения программы
Исследование структуры типов и их элементов
Создание экземпляров классов
Вызов методов
Загрузка классов из набора байтов
Описание слайда:
Возможности механизма рефлексии Загрузка типов во время исполнения программы Исследование структуры типов и их элементов Создание экземпляров классов Вызов методов Загрузка классов из набора байтов

Слайд 5





Участники механизма рефлексии
Класс java.lang.Class
Класс является метаклассом по отношению к другим типам
Экземпляры класса Class описывают классы и интерфейсы выполняемого приложения
Методы класса Class позволяют исследовать содержимое описываемого класса и его свойства
Класс java.lang.ClassLoader
Реализует механизмы загрузки классов
Описание слайда:
Участники механизма рефлексии Класс java.lang.Class Класс является метаклассом по отношению к другим типам Экземпляры класса Class описывают классы и интерфейсы выполняемого приложения Методы класса Class позволяют исследовать содержимое описываемого класса и его свойства Класс java.lang.ClassLoader Реализует механизмы загрузки классов

Слайд 6





Участники механизма рефлексии
Пакет java.lang.reflect
Содержит ряд дополнительных и вспомогательных классов
Field
	Описывает поле объекта
Method
	Описывает метод объекта
Constructor
	Описывает конструктор объекта
Modifier
	Инкапсулирует работу с модификаторами
Array
	Инкапсулирует работу с массивами
Описание слайда:
Участники механизма рефлексии Пакет java.lang.reflect Содержит ряд дополнительных и вспомогательных классов Field Описывает поле объекта Method Описывает метод объекта Constructor Описывает конструктор объекта Modifier Инкапсулирует работу с модификаторами Array Инкапсулирует работу с массивами

Слайд 7





Получение представления класса
Метод Class Object.getClass()
Возвращает ссылку на представление класса, экземпляром которого является объект
Псевдополе Object.class
Ссылка на представление указанного класса
Метод static Class Class.forName(...)
Возвращает ссылку на представление класса, полное имя которого указывается параметром типа String
Описание слайда:
Получение представления класса Метод Class Object.getClass() Возвращает ссылку на представление класса, экземпляром которого является объект Псевдополе Object.class Ссылка на представление указанного класса Метод static Class Class.forName(...) Возвращает ссылку на представление класса, полное имя которого указывается параметром типа String

Слайд 8





Получение представления класса
Метод Class[] Class.getClasses()
Возвращает ссылку на массив ссылок на объекты Class вложенных типов
Метод Class Class.getDeclaringClass()
Для вложенных типов возвращает ссылку на объект Class внешнего типа
Метод Class[] Class.getInterfaces()
Возвращает ссылки на описания интерфейсов, от которых наследует тип
Метод Class Class.getSuperclass()
Возвращает ссылку на описание родительского класса
Описание слайда:
Получение представления класса Метод Class[] Class.getClasses() Возвращает ссылку на массив ссылок на объекты Class вложенных типов Метод Class Class.getDeclaringClass() Для вложенных типов возвращает ссылку на объект Class внешнего типа Метод Class[] Class.getInterfaces() Возвращает ссылки на описания интерфейсов, от которых наследует тип Метод Class Class.getSuperclass() Возвращает ссылку на описание родительского класса

Слайд 9





Пример получения информации о классе
Описание слайда:
Пример получения информации о классе

Слайд 10





Возможности класса Class
Загрузка класса в JVM по его имени
static Class forName(String name)
Определение вида типа
boolean isInterface()
boolean isLocalClass()
Получение родительских типов
Class getSuperclass()
Class[] getInterfaces() 
Получение вложенных типов
Class[] getClasses()
Создание объекта
Object newInstance()
Описание слайда:
Возможности класса Class Загрузка класса в JVM по его имени static Class forName(String name) Определение вида типа boolean isInterface() boolean isLocalClass() Получение родительских типов Class getSuperclass() Class[] getInterfaces() Получение вложенных типов Class[] getClasses() Создание объекта Object newInstance()

Слайд 11





Возможности класса Class
Получение списка всех полей и конкретного поля по имени
Field[] getFields()
Field getField(...)
Получение списка всех методов и конкретного метода по имени и списку типов параметров 
Method[] getMethods()
Method[] getMethod(...)
Получение списка всех конструкторов и конкретного конструктора по списку типов параметров
Constructor[] getConstructors()
Constructor getConstructor(...)
Описание слайда:
Возможности класса Class Получение списка всех полей и конкретного поля по имени Field[] getFields() Field getField(...) Получение списка всех методов и конкретного метода по имени и списку типов параметров Method[] getMethods() Method[] getMethod(...) Получение списка всех конструкторов и конкретного конструктора по списку типов параметров Constructor[] getConstructors() Constructor getConstructor(...)

Слайд 12





Передача параметров 
в методы
Поскольку на момент написания программы типы и даже количество параметров неизвестно, используется другой подход:
Ссылки на все параметры в порядке их следования помещаются в массив типа Object
Если параметр имеет примитивный тип, то в массив помещается ссылка на экземпляр класса-оболочки соответствующего типа, содержащий необходимое значение
Возвращается всегда тип Object
Для ссылочного типа используется приведение типа или рефлексивное исследование
Для примитивных типов возвращается ссылка на экземпляр класса-оболочки, содержащий возвращенное значение
Описание слайда:
Передача параметров в методы Поскольку на момент написания программы типы и даже количество параметров неизвестно, используется другой подход: Ссылки на все параметры в порядке их следования помещаются в массив типа Object Если параметр имеет примитивный тип, то в массив помещается ссылка на экземпляр класса-оболочки соответствующего типа, содержащий необходимое значение Возвращается всегда тип Object Для ссылочного типа используется приведение типа или рефлексивное исследование Для примитивных типов возвращается ссылка на экземпляр класса-оболочки, содержащий возвращенное значение

Слайд 13





Создание экземпляров классов
Метод Object Class.newInstance()
Возвращает ссылку на новый экземпляр класса, используется конструктор по умолчанию
Метод
Object Constructor.newInstance(
   Object[] initArgs)
Возвращает ссылку на новый экземпляр класса, с использованием конструктора и указанными параметрами конструктора
Описание слайда:
Создание экземпляров классов Метод Object Class.newInstance() Возвращает ссылку на новый экземпляр класса, используется конструктор по умолчанию Метод Object Constructor.newInstance( Object[] initArgs) Возвращает ссылку на новый экземпляр класса, с использованием конструктора и указанными параметрами конструктора

Слайд 14





Вызов методов
Прямой вызов
Если на момент написания кода известен тип-предок загружаемого класса
Приведение типа и вызов метода
Вызов через экземпляр класса Method
Object Method.invoke(Object obj, Object[] args)
obj – ссылка объект, у которого должен быть вызван метод
принято передавать null, если метод статический
args – список параметров для вызова методов
Описание слайда:
Вызов методов Прямой вызов Если на момент написания кода известен тип-предок загружаемого класса Приведение типа и вызов метода Вызов через экземпляр класса Method Object Method.invoke(Object obj, Object[] args) obj – ссылка объект, у которого должен быть вызван метод принято передавать null, если метод статический args – список параметров для вызова методов

Слайд 15





Пример вызова
статического метода
Описание слайда:
Пример вызова статического метода

Слайд 16





Класс ClassLoader
Экземпляры класса отвечают
за загрузку классов 
в виртуальную машину
Это абстрактный класс, 
не имеющий ни одного 
абстрактного метода
Классы-наследники должны в каком-то смысле расширять возможности виртуальной машины по загрузке классов
Объекты загрузчиков образуют иерархию (родительский объект указывается как параметр защищённых конструкторов)
Описание слайда:
Класс ClassLoader Экземпляры класса отвечают за загрузку классов в виртуальную машину Это абстрактный класс, не имеющий ни одного абстрактного метода Классы-наследники должны в каком-то смысле расширять возможности виртуальной машины по загрузке классов Объекты загрузчиков образуют иерархию (родительский объект указывается как параметр защищённых конструкторов)

Слайд 17





Основные методы класса ClassLoader
public Class loadClass(String name)
Проверяет, не был ли класс загружен раньше
Вызывает аналогичный метод родительского объекта
Вызывает метод findClass(), чтобы найти класс
Не стоит переопределять этот метод
protected Class findClass(String name)
Ищет и загружает класс по имени специфическим для данного загрузчика способом
Этот метод и нужно переопределять
protected final Class defineClass(
String name, byte[] b, int off, int len)
Загружает класс из указанного набора байтов
Описание слайда:
Основные методы класса ClassLoader public Class loadClass(String name) Проверяет, не был ли класс загружен раньше Вызывает аналогичный метод родительского объекта Вызывает метод findClass(), чтобы найти класс Не стоит переопределять этот метод protected Class findClass(String name) Ищет и загружает класс по имени специфическим для данного загрузчика способом Этот метод и нужно переопределять protected final Class defineClass( String name, byte[] b, int off, int len) Загружает класс из указанного набора байтов

Слайд 18





Пример использования загрузчика классов
Описание слайда:
Пример использования загрузчика классов

Слайд 19





Пример использования загрузчика классов
Описание слайда:
Пример использования загрузчика классов

Слайд 20





Нововведения Java
Описание слайда:
Нововведения Java

Слайд 21





План лекции
Статический импорт
Автоупаковка/автораспаковка
Переменное количество аргументов в методах
Параметризованные типы
Цикл for-each
Перечислимые типы
Описание слайда:
План лекции Статический импорт Автоупаковка/автораспаковка Переменное количество аргументов в методах Параметризованные типы Цикл for-each Перечислимые типы

Слайд 22





Проблема
Имеется:
Хотелось бы:
Описание слайда:
Проблема Имеется: Хотелось бы:

Слайд 23





Статический импорт
Импорт элемента типа
	import static pkg.TypeName.staticMemberName;
Импорт всех элементов типа
	import static pkg.TypeName.*;
Описание слайда:
Статический импорт Импорт элемента типа import static pkg.TypeName.staticMemberName; Импорт всех элементов типа import static pkg.TypeName.*;

Слайд 24





Особенности статического импорта
Повышает удобство написания программ и уменьшает объем кода
Уменьшает удобство чтения программ
Приводит к конфликтам имен
Мораль: рекомендуется к использованию только когда действительно необходим
Описание слайда:
Особенности статического импорта Повышает удобство написания программ и уменьшает объем кода Уменьшает удобство чтения программ Приводит к конфликтам имен Мораль: рекомендуется к использованию только когда действительно необходим

Слайд 25





Проблема
Имеется:
Хотелось бы:
Описание слайда:
Проблема Имеется: Хотелось бы:

Слайд 26





Автоупаковка и автораспаковка
Автоупаковка – процесс автоматической инкапсуляции данных простого типа в экземпляр соответствующего ему класса-обертки в случаях, когда требуется значение ссылочного типа
Автораспаковка – процесс автоматического извлечения примитивного значения из объекта-упаковки в случаях, когда требуется значение примитивного типа
Описание слайда:
Автоупаковка и автораспаковка Автоупаковка – процесс автоматической инкапсуляции данных простого типа в экземпляр соответствующего ему класса-обертки в случаях, когда требуется значение ссылочного типа Автораспаковка – процесс автоматического извлечения примитивного значения из объекта-упаковки в случаях, когда требуется значение примитивного типа

Слайд 27





Особенности автоупаковки
Происходит при присваивании, вычислении выражений и при передаче параметров
Объекты создаются без использования ключевого слова new
Объекты создаются!
Вообще полагать, что примитивные типы 
не нужны
Автоупаковка требует существенных
ресурсов
Злоупотреблять автоупаковкой 
вообще не стоит!
Описание слайда:
Особенности автоупаковки Происходит при присваивании, вычислении выражений и при передаче параметров Объекты создаются без использования ключевого слова new Объекты создаются! Вообще полагать, что примитивные типы не нужны Автоупаковка требует существенных ресурсов Злоупотреблять автоупаковкой вообще не стоит!

Слайд 28





Проблема
Имеется:
Хотелось бы:
Описание слайда:
Проблема Имеется: Хотелось бы:

Слайд 29





Переменное количество аргументов
Пример метода
Пример вызова
Описание слайда:
Переменное количество аргументов Пример метода Пример вызова

Слайд 30





Особенности переменного количества аргументов
Внутри там все равно живет 
массив…
Аргумент переменной длинны 
в методе может быть только один
Аргумент переменной длинны должен быть последним в списке аргументов метода
В сочетании с перегрузкой методов способен приводить к изумительным ошибкам компиляции в виду неоднозначности кода
Описание слайда:
Особенности переменного количества аргументов Внутри там все равно живет массив… Аргумент переменной длинны в методе может быть только один Аргумент переменной длинны должен быть последним в списке аргументов метода В сочетании с перегрузкой методов способен приводить к изумительным ошибкам компиляции в виду неоднозначности кода

Слайд 31





Проблема
Имеется:
Хотелось бы:
Описание слайда:
Проблема Имеется: Хотелось бы:

Слайд 32





Параметризованные типы
Параметризованные типы (настраиваемые типы, generic types)
Позволяют создавать классы, интерфейсы и методы, в которых тип обрабатываемых данных задается как параметр
Позволяют создавать более компактный код, чем универсальные (обобщенные) типы, использующие ссылки типа Object
Обеспечивают автоматическую проверку и приведение типов
Позволяют создавать хороший, годный повторно используемый код
Описание слайда:
Параметризованные типы Параметризованные типы (настраиваемые типы, generic types) Позволяют создавать классы, интерфейсы и методы, в которых тип обрабатываемых данных задается как параметр Позволяют создавать более компактный код, чем универсальные (обобщенные) типы, использующие ссылки типа Object Обеспечивают автоматическую проверку и приведение типов Позволяют создавать хороший, годный повторно используемый код

Слайд 33





Скромный пример
Пример класса
Пример использования
Описание слайда:
Скромный пример Пример класса Пример использования

Слайд 34





Особенности параметризованных типов
Использовать примитивные типы в качестве параметров-типов нельзя
Если одинаковые настраиваемые типы имеют различные аргументы, то это различные типы
Обеспечивается более жесткий контроль типов на стадии компиляции
Описание слайда:
Особенности параметризованных типов Использовать примитивные типы в качестве параметров-типов нельзя Если одинаковые настраиваемые типы имеют различные аргументы, то это различные типы Обеспечивается более жесткий контроль типов на стадии компиляции

Слайд 35





Общий синтаксис
Объявление настраиваемого типа
	class имяКласса<список-формальных-параметров> {...}


Создание ссылки и объекта настраиваемого типа
	имяКласса<список-фактических-параметров> имяПеременной = new имяКласса<список-фактических-параметров>(список-аргументов);
Описание слайда:
Общий синтаксис Объявление настраиваемого типа class имяКласса<список-формальных-параметров> {...} Создание ссылки и объекта настраиваемого типа имяКласса<список-фактических-параметров> имяПеременной = new имяКласса<список-фактических-параметров>(список-аргументов);

Слайд 36





Ограниченные типы
Ограничение типа позволяет использовать у ссылок методы и поля, доступные в типе-ограничителе
Типы, не наследующие от указанного, не могут быть использованы при создании объектов
Как имя типа может быть указан интерфейс!!!
Как имя типа может быть указан ранее введенный параметр!!!
Описание слайда:
Ограниченные типы Ограничение типа позволяет использовать у ссылок методы и поля, доступные в типе-ограничителе Типы, не наследующие от указанного, не могут быть использованы при создании объектов Как имя типа может быть указан интерфейс!!! Как имя типа может быть указан ранее введенный параметр!!!

Слайд 37





Метасимвольный аргумент
Что делать при передаче экземпляров параметризованных типов в методы, т.е. как писать сигнатуру?
Для этого используется метасимвол, обозначающий произвольный тип-параметр
Описание слайда:
Метасимвольный аргумент Что делать при передаче экземпляров параметризованных типов в методы, т.е. как писать сигнатуру? Для этого используется метасимвол, обозначающий произвольный тип-параметр

Слайд 38





Метасимвол с ограничениями
Ограничение сверху
	<? extends super>
	Тип super допускается
Ограничение снизу
	<? super sub>
	Тип sub не допускается
Описание слайда:
Метасимвол с ограничениями Ограничение сверху <? extends super> Тип super допускается Ограничение снизу <? super sub> Тип sub не допускается

Слайд 39





Параметризованные методы
Методы могут иметь собственные типы-параметры
Фактические аргументы, передаваемые в формальные аргументы, имеющие тип-параметр, будут проверяться на соответствие типу, причем на этапе компиляции
Пример метода
Пример использования
Описание слайда:
Параметризованные методы Методы могут иметь собственные типы-параметры Фактические аргументы, передаваемые в формальные аргументы, имеющие тип-параметр, будут проверяться на соответствие типу, причем на этапе компиляции Пример метода Пример использования

Слайд 40





Ряд особенностей
Конструкторы могут быть параметризованными (даже если сам класс таковым не является)
Интерфейсы могут быть параметризованными
Нельзя создавать объекты, используя типы-параметры
Статические члены класса не могут использовать его типы-параметры
Настраиваемый класс не может расширять класс Throwable
От настраиваемых типов можно наследовать, есть ряд особенностей
Описание слайда:
Ряд особенностей Конструкторы могут быть параметризованными (даже если сам класс таковым не является) Интерфейсы могут быть параметризованными Нельзя создавать объекты, используя типы-параметры Статические члены класса не могут использовать его типы-параметры Настраиваемый класс не может расширять класс Throwable От настраиваемых типов можно наследовать, есть ряд особенностей

Слайд 41





Ряд особенностей
Нельзя создать массив типа-параметра
Массивов элементов конкретной версии параметризованного типа не бывает
Описание слайда:
Ряд особенностей Нельзя создать массив типа-параметра Массивов элементов конкретной версии параметризованного типа не бывает

Слайд 42





И как же это работает?
Механизм стирания
В реальном байт-коде никаких настраиваемых типов в целом-то и нет…
Информация о настраиваемых типах удаляется на стадии компиляции
Именно компилятор осуществляет контроль безопасности приведения типов
А внутри после компиляции все те же «обобщенные» классы, явные приведения типов и прочее, и прочее…
Описание слайда:
И как же это работает? Механизм стирания В реальном байт-коде никаких настраиваемых типов в целом-то и нет… Информация о настраиваемых типах удаляется на стадии компиляции Именно компилятор осуществляет контроль безопасности приведения типов А внутри после компиляции все те же «обобщенные» классы, явные приведения типов и прочее, и прочее…

Слайд 43





Ошибки неоднозначности
«Логически правильный» код
Оказывается неверным с точки зрения компилятора
И это – самый простой пример…
Описание слайда:
Ошибки неоднозначности «Логически правильный» код Оказывается неверным с точки зрения компилятора И это – самый простой пример…

Слайд 44





Проблема
Имеется:
Хотелось бы:
Описание слайда:
Проблема Имеется: Хотелось бы:

Слайд 45





Улучшенный цикл for
(for-each)
Общая форма записи
	for (type iterVar : iterableObj) statement;
Тип элемента
Переменная цикла
Агрегат с элементами
Тело цикла
Описание слайда:
Улучшенный цикл for (for-each) Общая форма записи for (type iterVar : iterableObj) statement; Тип элемента Переменная цикла Агрегат с элементами Тело цикла

Слайд 46





Работа улучшенного цикла for
В каждом витке цикла «извлекается» очередной элемент агрегата
Ссылка на него (для ссылочных типов) или значение (для примитивных) помещается в  переменную цикла
Тип переменной цикла должен
допускать присвоение 
элементов агрегата
Цикл выполняется до тех пор, 
пока не будут перебраны 
все элементы агрегата
Описание слайда:
Работа улучшенного цикла for В каждом витке цикла «извлекается» очередной элемент агрегата Ссылка на него (для ссылочных типов) или значение (для примитивных) помещается в переменную цикла Тип переменной цикла должен допускать присвоение элементов агрегата Цикл выполняется до тех пор, пока не будут перебраны все элементы агрегата

Слайд 47





Пример обработки многомерных массивов
Описание слайда:
Пример обработки многомерных массивов

Слайд 48





Особенности улучшенного
цикла for
По сути это внутренний итератор
Переменная цикла доступна только для чтения…
Порядок обхода в целом не определен…
Нет доступа к соседним элементам…
Мораль:
Область применения обобщенного цикла for «несколько уже», чем у «необобщенной» версии
Зато для этого класса задач синтаксис обобщенного цикла существенно удобнее
Описание слайда:
Особенности улучшенного цикла for По сути это внутренний итератор Переменная цикла доступна только для чтения… Порядок обхода в целом не определен… Нет доступа к соседним элементам… Мораль: Область применения обобщенного цикла for «несколько уже», чем у «необобщенной» версии Зато для этого класса задач синтаксис обобщенного цикла существенно удобнее

Слайд 49





Внимание, вопрос!
А кто же управляет итерациями?
Агрегат обязан реализовывать интерфейс java.lang.Iterable<T>
Сей интерфейс содержит лишь один элемент
Iterator<T> iterator()
Данный, вроде бы знакомый, интерфейс, тоже претерпел некоторые изменения:
 boolean hasNext()
 void remove()
 T next()
Описание слайда:
Внимание, вопрос! А кто же управляет итерациями? Агрегат обязан реализовывать интерфейс java.lang.Iterable<T> Сей интерфейс содержит лишь один элемент Iterator<T> iterator() Данный, вроде бы знакомый, интерфейс, тоже претерпел некоторые изменения: boolean hasNext() void remove() T next()

Слайд 50





Проблема
Имеется:
Хотелось бы:
Описание слайда:
Проблема Имеется: Хотелось бы:

Слайд 51





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

Константы перечислимого типа
	Jonathan, GoldenDel, RedDel…
Объявление переменной
Присвоение переменной значения
Описание слайда:
Перечислимые типы Перечислимый тип Apple Константы перечислимого типа Jonathan, GoldenDel, RedDel… Объявление переменной Присвоение переменной значения

Слайд 52





Перечислимые типы
Проверка равенства
Использование в блоке переключателей
Описание слайда:
Перечислимые типы Проверка равенства Использование в блоке переключателей

Слайд 53





А теперь отличия от классики
Перечислимый тип – это класс!
Да к тому же имеет методы!
public static enumType[] values()
возвращает ссылку на массив ссылок на все константы перечислимого типа
public static enumType valueOf(String str)
возвращает константу перечислимого типа, имя которой соответствует указанной строке, иначе выбрасывает исключение
Описание слайда:
А теперь отличия от классики Перечислимый тип – это класс! Да к тому же имеет методы! public static enumType[] values() возвращает ссылку на массив ссылок на все константы перечислимого типа public static enumType valueOf(String str) возвращает константу перечислимого типа, имя которой соответствует указанной строке, иначе выбрасывает исключение

Слайд 54





И еще отличия…
Можно определять конструкторы, добавлять поля и методы, реализовывать интерфейсы
Описание слайда:
И еще отличия… Можно определять конструкторы, добавлять поля и методы, реализовывать интерфейсы

Слайд 55





Особенности перечислимых типов
Создавать экземпляры с помощью оператора new нельзя!
Все перечислимые типы наследуют от класса java.lang.Enum
Клонировать экземпляры нельзя, сравнивать и выполнять прочие стандартные операции – можно
Описание слайда:
Особенности перечислимых типов Создавать экземпляры с помощью оператора new нельзя! Все перечислимые типы наследуют от класса java.lang.Enum Клонировать экземпляры нельзя, сравнивать и выполнять прочие стандартные операции – можно

Слайд 56





Спасибо за внимание!
Описание слайда:
Спасибо за внимание!

Слайд 57





Дополнительные источники
Арнолд, К. Язык программирования 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.
Описание слайда:
Дополнительные источники Арнолд, К. Язык программирования 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.



Похожие презентации
Mypresentation.ru
Загрузить презентацию