Loosening requirements for super() invocation

Maurizio Cimadamore maurizio.cimadamore at oracle.com
Thu Jan 26 19:19:14 UTC 2023


On 26/01/2023 18:16, Archie Cobbs wrote:
> On Thu, Jan 26, 2023 at 11:00 AM Maurizio Cimadamore 
> <maurizio.cimadamore at oracle.com> wrote:
>
>     I agree that the behavior you propose is not problematic per se.
>
>     But, as I mentioned, it brings up can of worms. For instance, now
>     a superclass constructor could see its field with a non-zero
>     value. Which could definitively be surprising. After all, there
>     might be code in the wild assuming that an int field that has not
>     been assigned yet has value zero - whether writing code like that
>     is good or bad, it's a separate question. My point here is that
>     here you cross a fine line between  "let's make the language more
>     expressive" and "this change might have some compatibility impact".
>
> Yes, but for this to happen the subclass would have to be in effect 
> intentionally subverting the superclass constructor.
>
> In other words, a problem like you describe can't suddenly just start 
> happening "by accident" just because this new feature exists...

Well, you could have a subclass (in some client jar) which "subverts" as 
you say, some superclass in a library. Perhaps the library was not 
prepared for that kind of behavior, and now there's a new bug.

IMHO, we should try to stay well clear of that can of worms. It's not 
like we have to open it now either - the other things you propose are 
100% non-controversial.

Maurizio

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://mail.openjdk.org/pipermail/amber-dev/attachments/20230126/4d9d9486/attachment.htm>


More information about the amber-dev mailing list