Обобщения

После выхода в 1995 г. первоначальной версии 1.0 в язык Java было добавлено множество новых средств. Одним из наиболее значительных и влиятельных новшеств стали обобщения (generics). Во-первых, их появление означало добавление новых синтаксических элементов в язык. Во-вторых, они повлекли за собой изменения во многих классах и методах самого API ядра. Поскольку обобщения оказали столь значительное влияние на язык, многие программисты с большим трудом привыкают к их использованию. Однако с появлением версии JDK 6 игнорировать обобщения становится практически невозможно. Примите как неизбежность то, что собираясь программировать на Java SE, вам обязательно придется иметь дело с обобщениями. К счастью, это средство не так трудно использовать и оно сулит значительные выгоды для программистов Java.

За счет применения обобщений стало возможным создавать классы, интерфейсы и методы, работающие в безопасной к типам манере с разнообразными видами данных. Многие алгоритмы логически идентичны, независимо от того, к данным каких типов они применяются. Например, механизм, поддерживающий стеки, является одним и тем же в стеках, хранящих элементы типов Integer, String, Object или Thread. Благодаря обобщениям, вы можете определить алгоритм однажды, независимо от конкретного типа данных, и затем применять его к широкому разнообразию типов данных без каких-либо дополнительных усилий. Впечатляющая мощь добавленных к языку обобщений, фундаментально изменила способы написания кода Java.

Вероятно, одно из средств Java, которое в наибольшей степени испытало влияние обобщений — это каркас коллекций (Collections Framework). Упомянутый каркас является частью Java API и подробно описана в главе 17, но стоит вкратце пояснить ее здесь. Коллекция — это группа объектов. Каркас коллекций определяет несколько классов, таких как списки и карты, которые управляют коллекциями. Классы коллекций всегда готовы работать с объектами любых типов. Выгода от добавления в язык обобщений состоит в том, что классы коллекций теперь могут использоваться с полным обеспечением безопасности типов. То есть, помимо предоставления мощного нового элемента языка, обобщения также значительно усовершенствовали существующие средства. Вот почему обобщения представляют собой столь значимое дополнение к Java.

В настоящей главе описан синтаксис, теория и применение обобщений. Мы покажем, как обобщения обеспечивают безопасность типов в некоторых ранее трудных случаях.

Когда вы изучите эту главу, то захотите ознакомиться с главой 17, описывающей систему коллекций. Там вы найдете множество примеров работы обобщений.

Помните! Обобщения были добавлены в J2SE 5.0. Исходные тексты, использующие их, не могут быть скомпилированы старыми версиями java.c.