6 ms·
I gather that you would prefer invariant generics. I know a bit about type systems but very little about subtyping so I would really enjoy some information :)
by kiriakasis 8y ago
I gather that you would prefer invariant generics. I know a bit about type systems but very little about subtyping so I would really enjoy some information :)
Why are covariant generics bad? (also just a link is fine)
- brianpgordon 8y agoInvariant generics would at least let you rely on the type system doing its job correctly. But even better would be to annotate each type parameter as covariant, contravariant, or invariant - this is what Scala and C# and probably a bunch of other languages do. As an example, here's approximately how the Function trait is defined in Scala. The square brackets indicate type parameters (like angle brackets in Java), the - indicates covariance, and the + indicates contravariance. trait Function1[-T, +R] { def apply(arg1: T): R }