Содержание
- 2. Приклад без застосування узагальнень Перевантаження коду змінними типу Object public class Box { private Object object;
- 3. Узагальнення (Generics) Основні класи задач, які потребують застосування узагальнень: Розробка функцій-утиліт для колекцій (пошук, max, min,
- 4. Історія появи узагальнень в Java Узагальнення побачили світ в J2SE 5 (2004р.) Задача - розширити систему
- 5. Приклад застосування узагальнень Замість Object застосовуємо “типи-параметри” public class Box { private T t; public void
- 6. Реалізація узагальнень в Java Це елементи мови Це функціональність компілятора, яка дозволяє виявити певні помилки на
- 7. Елементи мови, які узагальнюються Що може бути узагальнене Класи але не всі, див. нижче Інтерфейси Методи
- 8. Узагальнені типи Узагальнені типи – узагальнені класи та узагальнені інтерфейси public class Box { private T
- 9. Узагальнені типи. Продовження Box - узагальнений клас із змінною типу T Box - параметризований тип, із
- 10. Узагальнені методи Узагальнений метод class Inspector { public void inspect(T t) { System.out.println(t.getClass().getName()); } } Виклик
- 11. Обмеження для змінних типу Подібного немає в C++ extends & extends – означає, що параметр типу
- 12. Whildcards (підстановочні типи). Мотивація public void boxTest(Box n) { ...} boxTest(new Box ()); // compile error
- 13. Whildcards (підстановочні типи). Мотивація Опція 1 public void boxTest(Box n) { ... } boxTest(new Box ());
- 14. Wildcards details Застосування “?” тільки для тих type arguments в полях/локальних змінних/методах/конструкторах/декларації класів List l =
- 15. Bounded wildcards Bounded wildcards - будь-який тип-нащадок Тип - будь-який тип-пращур Тип
- 16. Let’s look to java source public class LinkedList { public boolean addAll(Collection c) {…} }
- 17. Deep dive to java source public interface List extends Collection default void sort(Comparator c) { …
- 18. Це продовження попереднього слайду Дано class A {} class AA extends A {} class AAA extends
- 19. Real case of java generic constructor class State { V value; } interface TransitionFunction { V
- 21. Скачать презентацию