> From: "Brian Goetz" <brian.go...@oracle.com> > To: "Kevin Bourrillion" <kev...@google.com> > Cc: "Dan Heidinga" <heidi...@redhat.com>, "daniel smith" > <daniel.sm...@oracle.com>, "valhalla-spec-experts" > <valhalla-spec-experts@openjdk.java.net> > Sent: Jeudi 18 Novembre 2021 23:34:51 > Subject: Re: EG meeting, 2021-11-17
> I think it is reasonable to consider allowing bucket two classes to be > abstract. > They could be extended by other classes which would either be abstract or > final. The intermediate types are polymorphic but the terminal type is > monomorphic. > A similar argument works for records. I suppose you are talking about empty (no field) abstract classes. We need that for j.l.Object, j.l.Number or j.l.Record. >From a user POV, it's not very different from an interface with default >methods. Rémi > Sent from my iPad >> On Nov 18, 2021, at 5:27 PM, Kevin Bourrillion <kev...@google.com> wrote: >> On Wed, Nov 17, 2021 at 7:05 PM Dan Heidinga < [ mailto:heidi...@redhat.com | >> heidi...@redhat.com ] > wrote: >>> Let me turn the question around: What do we gain by allowing >>> subclassing of B2 classes? >> I'm not claiming it's much. I'm just coming into this from a different >> direction. >> In my experience most immutable (or stateless) classes have no real interest >> in >> exposing identity, but just get defaulted into it. Any dependency on the >> distinction between one instance and another that equals() it would be a >> probable bug. >> When B2 exists I see myself advocating that a developer's first instinct >> should >> be to make new classes in B2 except when they need something from B1 like >> mutability (and perhaps subclassability belongs in this list too!). As far >> as I >> can tell, this makes sense whether there are even any performance benefits at >> all, and the performance benefits just make it a lot more motivating to do >> what >> is already probably technically best anyway. >> Now, if subclassability legitimately belongs in that list of >> B1-forcing-factors, >> that'll be fine, I just hadn't fully thought it through and was implicitly >> treating it like an open question, which probably made my initial question in >> this subthread confusing. >> -- >> Kevin Bourrillion | Java Librarian | Google, Inc. | [ >> mailto:kev...@google.com | >> kev...@google.com ]