Содержание
- 2. Классы-оболочки В языке Java существуют классы-оболочки, которые являются объектным представлением восьми примитивных типов. Все классы-оболочки являются
- 3. Пример упаковки и распаковки int a = 5; Integer b = a; // автоупаковка Integer c
- 4. Примитивные типы и обёртки
- 5. Зачем нужны оболочки Разработчиками языка Java было принято решение отделить примитивные типы и классы-оболочки, указав при
- 6. Практика Создайте объект типа Double, и изучите список методов, предоставляемых этим классом. Создайте объект на основе
- 7. Обобщения (generics) Нередко, создаваемые разработчиками алгоритмы и коллекции могут быть успешно использованы для разных типов данных
- 8. Безопасность int x = 31; String s = "hello"; ArrayList array = new ArrayList(); array.add(x); //
- 9. Упаковка и распаковка В примере используется стандартный класс ArrayList из пакета java.util, который представляет коллекцию объектов.
- 10. Устройство ArrayList ArrayList устроен как массив ссылок типа Object, что позволяет добавлять в коллекцию переменные любого
- 11. Проблемы Упаковка и распаковка (boxing и unboxing) ведут к снижению производительности, поскольку система должна выполнить необходимые
- 12. Хранение ссылок Следует отметить, что если хранить в коллекции объекты ссылочных (не примитивных) типов, то снижения
- 13. Решение Обе проблемы смогут решить обобщённые типы. Они позволяют указать конкретный тип данных, который будет использоваться
- 14. Обобщённая версия int x = 32; String s = "hello"; ArrayList ar = new ArrayList ();
- 15. Комментарии к примеру Так как теперь используется обобщённая версия класса ArrayList, то нужно будет задать определённый
- 16. Пример generic-класса (Point) https://git.io/vokjC
- 17. Два параметра типа https://git.io/vot6i
- 18. Raw types (сырые типы) Forest f = new Forest(); f.setInhabitant1(new Fairy()); f.setInhabitant2(new Elf()); f.setInhabitant2(new Fairy()); Fairy
- 19. Определение Сырой тип — это имя обобщённого класса или интерфейса без аргументов типа. Можно часто увидеть
- 20. Пример с котиками https://git.io/voIfe
- 21. Ограниченный тип В некоторых случаях имеет смысл ограничить типы, которые можно использовать в качестве аргументов в
- 22. Ограничение параметра типа https://git.io/votrb class AverageCalculator {
- 23. Соглашение об именовании Переменные типа именуются одной буквой в верхнем регистре. Это позволяет легко отличить переменную
- 24. Generic method https://git.io/votdx
- 25. Generic constructor https://git.io/votFV Конструкторы могут быть обобщёнными как в обобщённых, так и в необобщённых классах.
- 26. Generic interface Iterable Comparable https://git.io/votbd
- 27. Обобщения и наследование Можно присвоить объекту одного типа объект другого типа, если эти типы совместимы. Например,
- 28. Обобщения и наследование В объектно-ориентированной терминологии это называется связью «является» (“is a”). Так как Integer является
- 29. Обобщения и наследование Это также верно для обобщений. Можно осуществить вызов обобщённого типа, передав Number в
- 30. Обобщения и наследование void boxTest(Box n) { /* ... */ } Можно ли будет передать в
- 31. Важно запомнить! Для двух типов A и B (например, Number и Integer), MyClass не имеет никакой
- 32. Неизвестный тип (wildcard) В обобщённом коде иногда встречается знак вопроса (?), называемый подстановочным символом, и означает
- 33. Unbounded wildcard https://git.io/vothz Если просто использовать подстановочный символ , то получится подстановочный символ без ограничений. Например,
- 34. Зачем нужен wildcard
- 35. Зачем нужен wildcard
- 36. Upper bounded wildcard Можно использовать подстановочный символ, ограниченный сверху, чтобы ослабить ограничения для переменной класса. Например,
- 37. Пример на UBW https://git.io/voqe2
- 38. Lower bounded wildcard Ограниченный снизу подстановочный символ ограничивает неизвестный тип так, чтобы он был либо указанным
- 39. Почему обобщения не работают с примитивными типами? http://stackoverflow.com/questions/2721546/why-dont-java-generics-support-primitive-types Generics in Java are an entirely compile-time construct
- 40. Стирание типа Обобщения были введены в язык программирования Java для обеспечения более жёсткого контроля типов во
- 41. Стирание типа
- 42. Стирание типа
- 43. Стирание типа
- 44. На тему стирания типов http://www.journaldev.com/1663/java-generics-example-method-class-interface#type-erasure http://www.angelikalanger.com/GenericsFAQ/FAQSections/TechnicalDetails.html#FAQ101
- 45. Чего делать нельзя
- 46. Чего делать нельзя
- 47. Чего делать нельзя
- 48. Чего делать нельзя
- 49. Чего делать нельзя It's because Java's arrays (unlike generics) contain, at runtime, information about its component
- 50. Что почитать про обобщения https://urvanov.ru/2016/04/28/java-8-%D0%BE%D0%B1%D0%BE%D0%B1%D1%89%D0%B5%D0%BD%D0%B8%D1%8F/ http://rsdn.ru/article/java/genericsinjava.xml http://developer.alexanderklimov.ru/android/java/generic.php http://www.k-press.ru/cs/2008/3/generic/generic.asp http://www.quizful.net/post/java-generics-tutorial http://javarevisited.blogspot.com/2011/09/generics-java-example-tutorial.html https://uk.wikipedia.org/wiki/%D0%A3%D0%B7%D0%B0%D0%B3%D0%B0%D0%BB%D1%8C%D0%BD%D0%B5%D0%BD%D0%BD%D1%8F_%D0%B2_Java http://docs.oracle.com/javase/tutorial/extra/generics/morefun.html
- 52. Скачать презентацию