JEP 218: Generics over Primitive Types
simon at ochsenreither.de
Sat Oct 25 03:02:09 UTC 2014
One thing that's still unclear to me is how variance well be handled.
In current Java, it would be possible to say "variance is declared at
use-site, so we can just reject such variance annotations when the type
participating is a value type", but in other languages, this is an issue
because of variance is declared at declaration-site.
Rejecting all such definitions is a bad idea, because that would mean a
large percentage of such types could either not be specialized at all,
or wouldn't be able to be variant anymore, including for reference types.
Given that even Java has now a JEP Draft¹ to add declaration-site
variance, I think it would be a reasonable idea to figure this out
before the issue arises.
It would probably make sense to allow such declarations, but specify
that all variance relations where a value type participates are
collapsed into an invariant definition.
It is not an obscure issue: This question arises for popular types like
List[T] or Vector[T].
More information about the valhalla-dev