суббота, 17 июня 2017 г.
воскресенье, 26 марта 2017 г.
OCJP - Genercis and collections
Это крупный и очень насыщенный подводными камнями раздел. Здесь нужно не только понимать как работают коллекции и дженерики, но и знать многие нюансы используемых классов и интерфейсов.
О банальных вещах писать не буду. Я полагаю нет проблем знать отличия LinkedList, ArrayList, List, Set, HashSet, Map, HashMap и как эти классы и интерфейсы применять и использовать. И как объявлять простые генерализированные структуры из них. К банальным вещам относится diamond оператор <> и приведение типов элементов негенерализированных коллекций.
Начнем с дженериков.
Генерализированные коллекции могут работать с коллекциями не генерализированными. Это позволяется потому, что после компиляции информация о типе коллекции стирается. А вот на этапе компиляции все генерализированные коллекции считаются как будто новыми классами.
Дженерики вообще не сложные, до тех пор пока не появляются следующие слова:
?, super, extend
Главное правило такое:
если коллекция передается для того, чтобы добавить данные, то надо использовать super. Тогда можно добавлять в коллекцию элементы наследников выбранного класса. Если коллекция передается в метод, чтобы извлечь данные, тогда надо использовать слово extend. В таком случае можно доставать элементы выбранного класса.
Модификация - super
Извлечение - extend
С дженериками все остальное довольно прозрачно и понятно.
Коллекции
Подписаться на:
Сообщения (Atom)