A programming language mechanism by which a single piece of code (function, object, interface, etc.) can manipulate many different data types without explicitly having a separate entity for each data type. Templates in C++ are a common example.
Generics allow you to define a class and or method that are defined with a type parameter. When client code instantiates the type, it specifies a particular type as an argument. For more information, see Generics.