JavaSE_part_3_generics.ppt
- Количество слайдов: 18
Язык программирования JAVA Generics
Содержание Что такое generics? Зачем? Ошибка выполнения Преимущества Ошибка компиляции Терминалогия Параметризация Wildcard Параметры с ограничениями Ограничения использования
Что такое generics? Обобщения (generics) — это параметризированные типы. Обобщенные: типы (generic types) ●классы (без enum, исключений, анонимных!) ●интерфейсы (без аннотаций!) ●методы (generic methods) ●конструкторы (generic constructors)
До Java 5. 0 class Box { private Object item; public void set. Item (Object o) { item = o; } public Object get. Item () { return item; } } public class Test { public static void main(String[] args) { Box box = new Box(); box. set. Item("hello"); String str 1 = (String)box. get. Item(); System. out. println(str 1); } } Результат выполнения: hello
Ошибка выполнения class Box { private Object item; public void set. Item (Object o) { item = o; } public Object get. Item () { return item; } } public class Test { public static void main(String[] args) { Box box = new Box(); box. set. Item("hello"); Integer int 1 = (Integer)box. get. Item(); //Exception System. out. println(int 1); } } Результат выполнения: Exception in thread "main" java. lang. Class. Cast. Exception: java. lang. String cannot be cast to java. lang. Integer
Зачем? Контейнеры ● гетерогенные ● гомогенные class Box
Преимущества Определение ошибок использования типов на этапе компиляции. Использование параметризованных - типов - методов - конструкторов Использование wildcards - с ограничениями - без ограничений
Ошибка компиляции сlass Box
Терминология Generic: class A
Параметризация Подстановка вместо параметра конкретного значения при использовании generic: Параметризованный класс: A
Класс с двумя параметрами class Box
Wildcard Использование generic с указанием wildcards: ? extends <== extends wildcard ? super <== super wildcard ? <== unbounded wildcard class Box<Т> {} Generic класс: class Human { public void class A
Параметры с ограничениями При объявлении можно наложить ограничения на значение параметра generic. class A
Ограничение сверху class Box
Обобщенные интерфейсы interface Box<Т> { set. Item(T item); } class Box. Impl implements Box
Иерархия классов class Box<Т> { public void set. Item (T item) {} } class Big. Box
Ограничения использования Внутри generic нельзя: ● ● ● создать объект этого типа создать массив такого типа использовать в секции catch использовать в статическом контексте использовать в instanceof (справа) наследовать
Вопросы?


