Generics, мощно допълнение към Delphi, бяха представени през Delphi 2009 като нова езикова функция. Generics или родови типове (също знам като параметризирани типове), ви позволяват да дефинирате класове, които не дефинират конкретно типа на определени членове от данни.
Например, вместо да използвате типа TObjectList, за да имате списък с всякакви типове обекти, от Delphi 2009, Generics. Единицата за колекции определя по-силно набран TObjectList.
Понякога родовите имена се наричат общи параметри, име, което позволява да се въведе малко по-добре. За разлика от функционалния параметър (аргумент), който има стойност, общият параметър е тип. И параметризира клас, интерфейс, запис или по-рядко метод... С, като бонус, анонимни процедури и рутинни препратки
Delphi tList, tStringList, tObjectlist или tCollection могат да се използват за изграждане на специализирани контейнери, но изискват typecasting. С Generics кастингът се избягва и компилаторът може да забележи грешки от типа по-рано.
След като напишете клас, използвайки параметри на общ тип (generics), можете да го използвате с всеки тип и тип, който решите да използвате с която и да е употреба от този клас, замества общите типове, които сте използвали, когато сте създали клас.
Повечето от примерите, които съм виждал за Generics в Delphi, използват класове, съдържащи родов тип. Въпреки това, докато работя по личен проект, реших, че искам интерфейс, съдържащ общ тип.