On Wed, Nov 17, 2021 at 11:16 AM Dan Heidinga <heidi...@redhat.com> wrote:
> For the moment I think this does probably carry over to > WithIdentity/WithoutIdentity or whatever they are called. The question I > think is still open (to me) is whether there really are active contractual > implications of being identityless or if it's equivalent to being > uncommitted; i.e. should a clear-cut identityless class still be able to > have an identityful subclass, or does that clearly break something. > > It breaks flattening. If an identityless class is flattened - and we > want to preserve the option to do this for bucket 2 values that are <= > 64 bits - then we can't assign a subclass instance to a slot (field / > array element) declared to be the superclass's type as we may have to > truncate the subclass to have it fit. > Right. I guess I was figuring that the mere fact of the idenityless class being non-final would already destroy that? Supposing this justifies requiring `final` for these classes, then my question evaporates. I wasn't sure though. Even losing flattening entirely doesn't leave you worse off than B1. -- Kevin Bourrillion | Java Librarian | Google, Inc. | kev...@google.com