Simplifying reified generics with partial specialization

Ron Pressler ron at
Mon Jan 5 17:37:06 UTC 2015

A specialized class does not extend its "template" (i.e. ArrayList<int>
doesn't extend ArrayList) but still implement its interfaces.

As to your other example, you'd get a
ClassCastException/ArrayStoreException because the storage is still
specialized. This behavior is specifically allowed by the List interface

Ron Pressler
@puniverseco <> on Twitter

On Mon, Jan 5, 2015 at 5:41 PM, Simon Ochsenreither <simon at>

> > Why, you'd get an NPE, of course! While ArrayList<int> would be a
> List<Integer>, it will *not* be an ArrayList<Integer>.
> That sounds incredibly asymmetric. What's the rule behind "it implements
> X, but not Y"?
> What about the second, more interesting case I mentioned?

More information about the valhalla-dev mailing list