Generic containers can be a time saver when having a item, and a strongly typed list of those items. It saves the repetitive coding of creating a new class with perhaps a TList
In the spirit of Cosmin's answer, essentially a response to Deltic's answer, here is how to fix Deltic's code:
type TAnimal = class end; TDog = class(TAnimal) end; TAnimalList = class(TList) procedure Feed; end; TDogList = TAnimalList;
Now you can write:
var Dogs: TDogList; ... Dogs.Feed;