Наборы и карты не параметризованы?

В первом абзаце книги Джоша Блоха «Эффективная Java's 29th Item» говорится, что

это контейнер, который параметризован

Разве автор не отбрасывает наборы и карты как параметризованные типы в соответствии с приведенным выше объявлением?


person user961690    schedule 03.05.2015    source источник
comment
Нет, не сбрасывает. Перечитайте это.   -  person Tagir Valeev    schedule 03.05.2015
comment
Все люди смертны. Сократ - мужчина. Следовательно, Сократ смертен. // Контейнеры параметризованы. Наборы и карты являются контейнерами. Следовательно, наборы и карты параметризуются?   -  person Andrey Tyukin    schedule 03.05.2015
comment
Спасибо @AndreyTyukin Сэр   -  person user961690    schedule 03.05.2015
comment
Спасибо @TagirValeev Сэр   -  person user961690    schedule 03.05.2015


Ответы (1)


Цель пункта 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 — нет. Это различие, которое Блох пытается провести в этом пункте, заключается в том, что вы можете использовать параметры типа более мощными способами, чем просто создавать безопасные для типов коллекции.

person dimo414    schedule 23.07.2017