Το Generics, μια ισχυρή προσθήκη στους Δελφούς, παρουσιάστηκε στους Δελφούς 2009 ως μια νέα γλωσσική δυνατότητα. Generics ή γενικοί τύποι (επίσης γνωστοί ως παραμετρικοί τύποι), σας επιτρέπει να ορίσετε τάξεις που δεν καθορίζουν συγκεκριμένα τον τύπο συγκεκριμένων μελών δεδομένων.
Για παράδειγμα, αντί να χρησιμοποιήσετε τον τύπο TObjectList για να έχετε μια λίστα οποιωνδήποτε τύπων αντικειμένων, από τους Δελφούς 2009, το Generics. Η ενότητα Συλλογών ορίζει μια πιο έντονα πληκτρολογημένη λίστα TObjectList.
Τα γενικά ονομάζονται μερικές φορές γενικές παράμετροι, ένα όνομα που επιτρέπει την εισαγωγή τους κάπως καλύτερα. Σε αντίθεση με μια παράμετρο συνάρτησης (όρισμα), η οποία έχει μια τιμή, μια γενική παράμετρος είναι ένας τύπος. Και παραμετροποιεί μια κλάση, μια διεπαφή, μια εγγραφή ή, λιγότερο συχνά, μια μέθοδο... Με, ως μπόνους, ανώνυμες ρουτίνες και αναφορές ρουτίνας
Τα Delphi tList, tStringList, tObjectlist ή tCollection μπορούν να χρησιμοποιηθούν για τη δημιουργία εξειδικευμένων κοντέινερ, αλλά απαιτούν πληκτρολόγηση. Με το Generics, αποφεύγεται η μετάδοση και ο μεταγλωττιστής μπορεί να εντοπίσει σφάλματα τύπου νωρίτερα.
Μόλις γράψετε μια τάξη χρησιμοποιώντας παραμέτρους γενικού τύπου (γενικά), μπορείτε να χρησιμοποιήσετε αυτήν την τάξη με οποιονδήποτε τύπο και το τύπος που επιλέγετε να χρησιμοποιήσετε με οποιαδήποτε δεδομένη χρήση αυτής της κλάσης αντικαθιστά τους γενικούς τύπους που χρησιμοποιήσατε κατά τη δημιουργία του τάξη.
Τα περισσότερα από τα παραδείγματα που έχω δει για Generics στους Δελφούς χρησιμοποιούν τάξεις που περιέχουν γενικό τύπο. Ωστόσο, ενώ εργαζόμουν σε ένα προσωπικό έργο, αποφάσισα ότι ήθελα μια διεπαφή που να περιέχει έναν γενικό τύπο.