Java has variant parametric types (wildcards), an approach Atsushi Igarashi and Mirko Viroli.
Instead, Scala supports generics and "definition-site" generics.
During an internship at Microsoft Research in Cambridge, I added support for variance and generalized constraints to the production C# compiler. It was a pleasure to work in this environment, in particular to collaborate on this project with Andrew Kennedy and Claudio Russo.
The results are published in our ECOOP paper "Variance and Generalized Constraints for C# generics" (see publications).
It appears this made it to the product (C# 4.0). See here