Java. Что такое параметризированный или обобщенный тип? / What is a parameterized or generic type?

Обобщенный тип - это тип с формальными типами параметров. Параметризованный тип - это создание объекта обобщенного типа с реальными типами аргументов.
Обобщенный тип - это ссылочный тип, который содержит один или более параметров. Эти типы параметров затем заменяются типами аргументов, во время создания объекта.
Пример (обобщенный тип):
Интерфейс Collection содержит один параметр E. Тип параметра E - это всего лишь абстракция, которая позднее будет заменена реальным типом аргумента. Создание объекта обобщенного типа с реальными типами аргументов называется параметризованным типом.
Пример (параметризованный тип):
Объявление Collection<String> представляет собой параметризованный тип, что по сути представляет из себя создание объекта обобщенного типа Collection, где E будет заменено реальным типом String.
Как объявить обобщенный тип?
Также, как и регулярный тип, но с присоединенным объявлением типа параметра.
Обобщенный тип - это ссылочный тип, который имеет один или более типов параметров. В определении обобщенного типа, секция типа параметра следует за именем типа. Это список, значения которого разделяются запятой. Сам список окружен угловыми скобками.
Пример обобщенного типа:
Класс Pair имеет два параметра X и Y. Они заменяются типами аргументов во время создания объекта обобщенного типа Pair. Например, в объявлении Pair<String, Date>, тип параметра X заменен типом аргумента String, а Y заменен на Date. Область видимости X и Y - целое определение класса.
Есть ли такие типы, которые не могут иметь параметров?
Все типы, за исключением перечислений, анонимных вложенных классов и классов исключений, могут быть обобщенными.
Почти все ссылочные типы могут быть обобщенными. Это классы, интерфейсы, вложенные (статические) классы, вложенные интерфейсы, локальные классы.
Следующие типы не могут быть обобщенными:
Анонимные вложенные классы. Они могут реализовывать параметризованный интерфейс или наследоваться от параметризованного класса, но они не могут быть обобщенными сами по себе. Анонимные классы не имеют имен, но имя обобщенного класса является обязательным для объявления и создания объекта класса.
Классы исключений. обобщенный класс не должен явно или косвенно быть унаследован от класса Throwable. Обобщенное исключение или типы ошибок не разрешены, поскольку механизм отлова исключений - это механизм времени выполнения, а виртуальная машина ничего не знает об обобщенных типах и классах.
Типы перечислений. Перечисления не могут иметь типизированных параметров. Концептуально, тип перечисления и его значения - статичны, а поскольку параметризированные типы не могут быть использованы в статическом контексте, параметризация типа перечисления невозможна.
Материалы, которые могут вас заинтересовать
- Java. Как создать объект обобщенного типа? How is a generic type instantiated?
- Java. Что такое дженерики? / What is Java Generics?
- Вопрос: Восходящее преобразование и generic
- Играем в компилятор.
- Аргументы методов в Java : pass-by-value or pass-by-reference
- Все о String.intern()
- Java. Замена символов в строке / Replacing characters in string
- Java. Как получить путь к проекту? / How to get project path?
- Core java. Примеры, в которых зарыта собака







Отправить комментарий