RefObject and ValObject
Brian Goetz
brian.goetz at oracle.com
Mon Apr 15 13:26:44 UTC 2019
> But the other concerns remain, e.g. as to the fact that the boundary between reinterpreted types (Object as RefObject) and non-reinterpreted types (Object as top type) seems very fuzzy.
Right, which is why we’re still searching for an answer :)
We really, really want to be able to represent ref/val-ness in the type system. Why? Ignoring pedagogical concerns (which are significant):
- If certain operations (e.g., locking) are partial, we want to be able to provide a way to ask if the operation could succeed. Such as:
if (x instanceof RefObejct) { … lock on x … }
Saying “lock, and hope it doesn’t throw” is not a very good answer. We already have a tool for querying the dynamic type of an object — instanceof.
- Saying that a method should only accept reference objects should be something expressible in the method signature, as in
m(RefObject o) { … }
Types are how we do that.
- Similarly, we might want to express the above constraint generically; again, types are the way we do that:
class Foo<T extends RefObject> { }
And, Q-world already taught us that we wanted to retain Object as the top type. This mean, necessarily, that Object gets a little weirder; it takes on some partly-class, partly-interface behavior.
Here’s an idea: What if we migrated `Object` to be an abstract class? The casualty would be the code that says `new Object()`. While there’s certainly a lot of it out there, perhaps this is something amenable to migration:
- At the source level, for N versions, `new Object()` gets a warning that says “I’ll pretend you said `Object.newLockInstance()` or something.
- At the bytemode level, for M versions, we do something similar, likely for M > N.
We can start this now, before Valhalla even previews.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://mail.openjdk.java.net/pipermail/valhalla-spec-experts/attachments/20190415/fa9d3307/attachment.html>
More information about the valhalla-spec-experts
mailing list