Содержание
- 2. Что такое шаблоны? Обобщённое программирование — это такой подход к описанию данных и алгоритмов, который позволяет
- 3. Обобщения (Generic) Обобщения - это параметризованные типы. С их помощью можно объявлять классы, интерфейсы и методы,
- 5. Пример реализации без шаблонов class Box { private Object value; public Box(Object value) { this.value =
- 6. Пример с шаблонным типом class Box { private E value; public Box(E value) { this.value =
- 7. Синтаксис После имени класса в угловых скобках " " указано имя типа “E", которое может использоваться
- 8. Правила именования типов В именах переменных типа принято использовать заглавные буквы. Обычно для коллекций используется буква
- 9. Использование Box box1 = new Box (new Tea()); Tea tea = box1.get(); Box box 2 =
- 10. Алмазный синтаксис Чтобы упростить жизнь программистам в Java 7 был введён алмазный синтаксис (diamond syntax), в
- 11. Несовместимость generic-типов Для того чтобы сохранить целостности и независимости друг от друга, у Generics существует так
- 12. Ограничения Generic Невозможно создать объект generic типа, поскольку компилятор не знает, какой конструктор вызвать. private static
- 13. Ограничения Generic Невозможно реализовывать одновременно два одинаковых интерфейса с разными типами. public class DecimalString implements Comparable
- 14. Ограничения Generic Невозможно объявить статическое поле generic типа public class MyClass { private static T value;
- 15. Ограничения Generic Невозможно использовать instatceof для параметризованного типа. public static void setList(List list) { if (list
- 16. Ограничения Generic Невозможно создать массив параметризированного типа Box [] arrayOfLists = new Box [2];
- 17. Ограничения Generic Невозможно перегрузить метод, в котором типы параметров “стираются” до одного и того же типа.
- 18. Шаблоны аргументов (Wildcards ) Wildcard Parameters (wildcards). Этот термин в разных источниках переводится по-разному: метасимвольные аргументы,
- 19. Шаблоны аргументов (Wildcards ) Шаблон аргументов указывается символом ? и представляет собой неизвестный тип. Object obj
- 20. Wildcards Одно из преимуществ wildcards состоит в том, что они дают возможность написать код, который может
- 21. Wildcards public void rebox(Box box) { box.put(box.get()); }
- 22. Wildcards public void rebox(Box box) { reboxHelper(box); } private void reboxHelper(Box box) { box.put(box.get()); }
- 23. Wildcards Вспомогательный метод reboxHelper() является generic-методом. Generic-методы вводят дополнительные параметры типов (помещаемые в угловые скобки перед
- 24. Wildcards Однако в случае reboxHelper() generic-метод не задействует параметр типа для определения ограничения типа, а позволяет
- 25. Маски с ограничением extends Box box3 = new Box (new Coffee()); Box box3 = new Box
- 26. Маски с ограничением super Box box3 = new Box (new Coffee());
- 27. Универсальные методы (Generic methods) По аналогии с универсальными классами (дженерик-классами), можно создавать универсальные методы (дженерик-методы), то
- 28. Универсальные методы (Generic methods) Универсальные методы не надо путать с методами в generic-классе. Универсальные методы удобны,
- 29. Пример универсального метода class Utilities { public static void fill(List list, T val) { for (int
- 30. Как это работает? Поддержка generic-ов реализована средствами компилятора. Виртуальная машина не предоставляет никакой поддержки generic-ов, кроме
- 32. Скачать презентацию