Make new Object() backward compatible

Brian Goetz brian.goetz at
Sun May 9 15:04:31 UTC 2021

> The logical conclusion is that java.lang.Object is a parametric class with a parameter saying if it should implement IdentityObject or not.

Magic hammer, meet nail :)

To be explicit, what you're suggesting is something like

     class Object<ID : boolean> { ... }

where an identity class extends Object<true> and a primitive class 
extends Object<false> (and most interfaces remain parametric in ID.)

Its conceptually elegant, and we've discussed it before; in theory 
parametricity could range over things other than types, such as 
constants, identity-ness, etc (e.g., the ref and val projections could 
be species).  But to apply it to a problem as prosaic as this seems like 
cracking a walnut with a two-ton bomb.  (I don't thing this is what you 
want to teach on day 1.)

More information about the valhalla-spec-observers mailing list