Java (and presumably C#) "generics" are very much like a weakened version of normal parametric polymorphism.