Что подразумевается под параметризованным типом? - программирование

Что подразумевается под параметризованным типом?

Эта ссылка содержит следующее:

Создание типичного типа с аргументами фактического типа называется параметризованным типом. Пример (параметризованного типа):

Collection<String> coll = new LinkedList<String>();

Итак, что такое параметризованный тип?

  • Collection<String> или
  • LinkedList<String>
4b9b3361

Ответ 1

Они оба являются параметризованными типами: типы, которые принимают другие типы в качестве параметров.

Тот факт, что у вас разные типы с обеих сторон выражения, не имеет значения и имеет отношение к полиморфному поведению, т.е. поскольку LinkedList является подтипом Collection.

Ответ 2

Параметрированный тип обычно представляет собой класс, который имеет дело с другим объектом без интересного, какой он тип. Тип может быть определен с использованием символического "имени", а затем передается при создании экземпляра класса.

Например:

class MyClass<T> {
    private T obj;
    public MyClass<T>(T obj) {
        this.obj = obj;
    }
    public int getId() {
        return obj.hashCode();
    }
}

В приведенном выше примере MyClass обертывает объект любого типа и выполняет его метод hashCode(), используя тот факт, что этот метод всегда существует.

Вот как этот класс используется:

int sid = new MyClass<String>("aaaa").hashCode();

Обратите внимание, что вы не можете сказать new MyClass<String>(123): тот факт, что объект создан с параметром String, диктует тип аргумента конструктора.

Возвращаясь к вашему примеру, Collection<String> означает "сбор строк". Это означает, что вы не можете добавить в этот объект объект другого типа.

Ответ 3

Кажется, что общий тип и параметризованный тип являются синонимами. Но, кажется, не имеет права вызывать, например, Box<Integer> общий тип, поскольку в смысле слова, не являющегося общим. Итак, возможно:

Общий тип - это объявление с формальным параметром типа /s

class Box<T> { .. }

Box<T> является общим типом

Параметрированный тип - это объявление с фактическим аргументом типа /s

Box<Integer> b;        

Box<Integer> является параметризованным типом

Необработанный тип - это объявление общего типа без фактического аргумента типа /s.

class Box<T> { .. }
Box b;

Box является сырым типом

Ответ 4

Оба использования коллекции

Collection<String> 
LinkedList<String>

являются параметризованными типами, причем String является используемым типом.

Ответ 5

ParameterizedType представляет собой параметризованный тип, например Collection.

Параметрированный тип создается в первый раз, когда требуется рефлексивный метод, как указано в этом пакете. Когда создается параметризованный тип p, объявление общего типа, которое создает p, разрешается, и все аргументы типа p создаются рекурсивно. Дополнительную информацию о процессе создания переменных типа см. В разделе ТипVariable. Повторное создание параметризованного типа не влияет.

Экземпляры классов, реализующих этот интерфейс, должны реализовать метод equals(), который приравнивает любые два экземпляра, которые используют одно и то же объявление общего типа и имеют одинаковые параметры типа.