Delphi supports generic interfaces; for example we can declare a generic interface type IChecker = interface function Check(const Instance: T): Boolean; end; and use this generic interface as follows:
unit UseDemo; interface uses GenChecks; type TDemo = class ...
More...