In computer science, generics are a technique that allows one value to take different datatype (so-called polymorphism) as long as certain contracts (so-called subtype) are kept. The programming style with it is called "generic programming".
It is sometimes also called "template metaprogramming". Abstraction data
Among OOP languages, C++, Beta, Eiffel, Ada, and the latest Java provides generic facility. In C++, templates support generics and popularized the notion of generics.
For example, in C++ code,
template <int T> T max (T x, T y) { if (x < y) return y; else return x; }
In this case, a pseudo-datatype T is called "subtype". T can be anything that can be compared.
See also Partial evaluation