[External] : Re: Consolidating the user model
Kevin Bourrillion
kevinb at google.com
Wed Nov 3 17:23:20 UTC 2021
On Wed, Nov 3, 2021 at 9:02 AM John Rose <john.r.rose at oracle.com> wrote:
> One way to thicken this thin argument is to say that Point is not really
a class.
> It’s a primitive. Then it still has a value-set inclusion relation to
Object, but it’s
> not a sub-class of Object. It is a value-set subtype.
I would spin it like this: `Point` absolutely is a class. But its instances
are *values* (like ints and references are, but compound), and values *are
still not objects*.
We've said at times we want to "make everything an object", but I think the
unification users really care about is everything being a *class instance*.
I think this fits neatly with the current design: `Point` has no
supertypes*, not even `Object`, but `Point.ref` does.
(*I mean "supertype" in the polymorphic sense, not the "has a conversion"
sense or the "can inherit" sense. I don't know what the word is really
supposed to mean. :-))
> - !(Point *is a* Object) & (Point *has a* Object box)
> - Point does not (cannot) inherit methods from Object
> - Point can *execute* methods from Object, but only after value-set
mapping
I'm a little fuzzy on what these accomplish for us, can you spell it out a
bit?
It sounds like a special rule treating Object methods differently from
other supertype methods (?), which would be nice to not need.
--
Kevin Bourrillion | Java Librarian | Google, Inc. | kevinb at google.com
More information about the valhalla-spec-observers
mailing list