В первом абзаце книги Джоша Блоха «Эффективная Java's 29th Item» говорится, что
это контейнер, который параметризован
Разве автор не отбрасывает наборы и карты как параметризованные типы в соответствии с приведенным выше объявлением?
В первом абзаце книги Джоша Блоха «Эффективная Java's 29th Item» говорится, что
это контейнер, который параметризован
Разве автор не отбрасывает наборы и карты как параметризованные типы в соответствии с приведенным выше объявлением?
Цель пункта 29 (как я только что обсуждал в другом ответе) состоит в том, чтобы продемонстрировать другие варианты использования дженериков и параметризованных типов в дополнение к в коллекции. Во всей предыдущей главе обсуждались параметризованные типы коллекций, поэтому Блох явно не отбрасывает Map
и Set
и другие параметризованные типы — он отличает их от шаблона другого типа, который он называет "гетерогенным". контейнер".
Сравните интерфейс, например:
interface Collection<E> {
void put(E element);
E get(int index);
}
с чем-то вроде:
interface HeterogeneousContainer {
<T> void put(Class<T> type, T instance);
<T> T get(Class<T> type);
}
Обратите внимание, что Collection
имеет параметр типа, а HeterogeneousContainer
— нет. Это различие, которое Блох пытается провести в этом пункте, заключается в том, что вы можете использовать параметры типа более мощными способами, чем просто создавать безопасные для типов коллекции.