Наличие у метода класса параметра обобщенного типа не служит препятствием при перегрузке одноименных методов. Листинг 3.6 демонстрирует порядок объявления и перегрузки обычного метода и шаблона метода с параметром обобщенного типа.
type TDemoClass = class
procedure DemoMethod(X: double); overload; //обычный метод procedure DemoMethod<T>(X: T); overload; //шаблон метода
end;
В распоряжении демонстрационного класса имеются два метода DemoMethod (). Параметр первого метода задан явным образом в виде действительного типа double, а параметр второго представлен в виде обобщенного типа т.
var SC:TDemoClass; begin
SC:=TDemoClass.Create ;
SC.DemoMethod(3.1426); //обращение к DemoMethod(X: double)
SC.DemoMethod<Integer>(500); //обращение к шаблонуDemoMethod<T>(X: T)
Обратите внимание на то, что при вызове шаблона метода с обобщенным параметром следует определиться с типом обрабатываемых данных, указав его в угловых скобках после названия метода.
Замечание
Основные обобщенные типы данных Delphi объявлены в модуле Generics. Collections. Здесь вы обнаружите шаблоны для таких структур данных, как списки TList<T>, очереди TQueue<T>, стеки TStack<T>, словари TDictionary<TKey, TValue> ИТ. д.