Simplifying reified generics with partial specialization

Ron Pressler ron at paralleluniverse.co
Mon Jan 5 20:00:41 UTC 2015


  > it would be a bad idea to have occurrences of “int" which actually mean int|null.


They don’t. ArrayList<int> is specialized and cannot hold nulls, and while it would implement List<Integer>, it throws an NPE when trying to store a null, just like when trying to auto-unbox a null Integer. A List<Integer> is perfectly allowed to behave this way.

But I suggest that, per Brian’s request, we continue this discussion elsewhere. This isn’t the place for protracted discussions.







> On Jan 5, 2015, at 9:52 PM, Gavin King <gavin at hibernate.org> wrote:
> 
> 
> On Mon, Jan 5, 2015 at 1:10 PM, Ron Pressler <ron at paralleluniverse.co> wrote:
> 
> 
>> This would mean that ArrayList<int> will implement List<Integer> (and will
>> therefore extend List and List<?>)
>> 
>> 
>> 
> 
> 
> Ron I think this would be a bad idea. Yes, I know that Java
> unfortunately doesn't provide a typesafe null value, but I still think
> that it would be a bad idea to have occurrences of "int" which
> actually mean int|null. I think there's a really strong precedent in
> the language that ints can't be null.
> 
> 
> OTOH, perhaps it would be viable to make ArrayList<int> a subtype of
> ArrayList<? extends Integer>.
> 
> 



More information about the valhalla-dev mailing list