Оцените презентацию от 1 до 5 баллов!
Тип файла:
ppt / pptx (powerpoint)
Всего слайдов:
14 слайдов
Для класса:
1,2,3,4,5,6,7,8,9,10,11
Размер файла:
78.89 kB
Просмотров:
60
Скачиваний:
0
Автор:
неизвестен
Слайды и текст к этой презентации:
№1 слайд![generics](/documents_6/4f096766700ae031b4b33bd29bf06252/img0.jpg)
Содержание слайда: generics
№2 слайд![Generics Обобщенные типы](/documents_6/4f096766700ae031b4b33bd29bf06252/img1.jpg)
Содержание слайда: Generics
Обобщенные:
типы (generic types)
классы (без enum, исключений, анонимных!)
интерфейсы (без аннотаций!)
методы (generic methods)
конструкторы (generic constructors)
Пример generics – Collection framework из состава Java core.
№3 слайд![Предназначение Контейнеры](/documents_6/4f096766700ae031b4b33bd29bf06252/img2.jpg)
Содержание слайда: Предназначение
Контейнеры
гетерогенные
гомогенные
Параметризация
типов
методов
конструкторов
№4 слайд![Преимущества Определение](/documents_6/4f096766700ae031b4b33bd29bf06252/img3.jpg)
Содержание слайда: Преимущества
Определение ошибок использования типов на этапе компиляции.
Использование параметризованных
типов
методов
конструкторов
Использование wildcards
с ограничениями
без ограничений
№5 слайд![Терминология Generic class A](/documents_6/4f096766700ae031b4b33bd29bf06252/img4.jpg)
Содержание слайда: Терминология
Generic:
class A<T> {…} класс
public <T> A() {…} конструктор
public <T> T m(T t) {…} метод
T – параметр generic-а
№6 слайд![Параметризация Подстановка](/documents_6/4f096766700ae031b4b33bd29bf06252/img5.jpg)
Содержание слайда: Параметризация
Подстановка вместо параметра конкретного значения при использовании generic:
Параметризованный класс:
A<String> a = new A<String>();
№7 слайд![Байт код параметризованных](/documents_6/4f096766700ae031b4b33bd29bf06252/img6.jpg)
Содержание слайда: Байт код параметризованных generic-ов
Один байт код на все варианты конкретных значений параметра.
№8 слайд![Сырой тип raw type](/documents_6/4f096766700ae031b4b33bd29bf06252/img7.jpg)
Содержание слайда: Сырой тип (raw type)
Использование generic без значения параметра
Generic класс:
class A<T> {…}
Raw класс:
A a = new A();
№9 слайд![Wildcard параметризованные](/documents_6/4f096766700ae031b4b33bd29bf06252/img8.jpg)
Содержание слайда: Wildcard параметризованные типы
Использование generic с указанием wildcards:
? extends <== extends wildcard
? super <== super wildcard
? <== unbounded wildcard
Generic класс:
class A<T> {…}
Wildcard параметризованный класс:
A<?> a = new A<String>();
A<? extends Number> a = new A<Integer>();
A<? super Integer> a = new A<Number>();
№10 слайд![Параметры generic с](/documents_6/4f096766700ae031b4b33bd29bf06252/img9.jpg)
Содержание слайда: Параметры generic с ограничениями
При объявлении можно наложить ограничения на значение параметра generic.
class A <T extends B & J1 & J2> {…}
J1, J2 - интерфейсы
При использовании класса A
если B – интерфейс
T – интерфейс, обязан наследовать B, J1, J2,
если B – класс
T – класс, обязан наследовать B, реализовывать J1, J2
№11 слайд![Ограничения использования](/documents_6/4f096766700ae031b4b33bd29bf06252/img10.jpg)
Содержание слайда: Ограничения использования параметра generics
Внутри generic нельзя:
создать объект этого типа
создать массив такого типа
использовать в секции catch
использовать в статическом контексте
использовать в instanceof (справа)
наследовать
Замечание: информация о конкретном значении параметра во время выполнения не доступна.
№12 слайд![Преобразования типов raw type](/documents_6/4f096766700ae031b4b33bd29bf06252/img11.jpg)
Содержание слайда: Преобразования типов
raw type parameterized types
parameterized types parameterized types
№13 слайд![Преобразования типов Начиная](/documents_6/4f096766700ae031b4b33bd29bf06252/img12.jpg)
Содержание слайда: Преобразования типов
Начиная с 7й версии JSE язык включает т.н. daemond оператор:
A<String> a = new A<>();
Компилятор автоматически подставит подходящее (исходя из контекста) значение параметра generic.
№14 слайд![Массивы параметризованных](/documents_6/4f096766700ae031b4b33bd29bf06252/img13.jpg)
Содержание слайда: Массивы параметризованных generic
Объявить переменную типа массив параметризованных типов можно:
List<String>[] ar;
Создать массив нельзя:
ar = new ArrayList<String>[]; // compile time error!
Исключение (допустимо только для параметризованного wildcard без ограничений):
List<?>[] x = new ArrayList<?>[3]; // all ok