<div dir="ltr"><div dir="ltr">On Thu, Jan 26, 2023 at 4:05 PM Maurizio Cimadamore <<a href="mailto:maurizio.cimadamore@oracle.com">maurizio.cimadamore@oracle.com</a>> wrote:</div><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">On 26/01/2023 21:37, Maurizio Cimadamore wrote:<br>> For instance, even if we only allow updates to local fields, an <br>
> instance initializer can now see these updates. for you, this is <br>
> something good, for me this is just something else that developers <br>
> would have to remember about initialization order.<br>
><br>
Also, thinking some more, I realized that one of the things I find more <br>
"offputting", is that putting initialization of instance fields before <br>
`super` violates the mental barrier I have (and that I'm sure other <br>
developers have too) that the letters `t h i s` should never appear <br>
before a super() invocation. And I know it's an assignment, and it <br>
special, and the VM can deal with it... but... still... language-wise I <br>
think if we can latch onto rules that are fairly simple to explain ("no <br>
`this` -explicit or implicit - before this point!!!!), it makes things <br>
easier. <br></blockquote></div><div><br></div><div>Well I agree with that sentiment... having a simpler mental model is always nicer.<br></div><br><div>Personally as a developer I would gladly trade that simpler mental model for the warm & secure feeling I'll get when I can KNOW that my final fields are taken care of, before anything else can possibly go wrong with them (maybe restrict to only assignments to local final fields?). And the only people likely to venture into the init-before-super territory are the ones who actually need it... and they will need it badly... the rest of the crowd can keep super() first and keep their model nice & simple. It's kindof like ThreadLocals - you'll know when you need one, and when you do you'll be glad they're there because you realize there's no other way; but until then, you have no need to worry or even know about them.<br></div><div><br></div><div>Anyway it sounds like - unless John Rose wants to pick up the fight? - the sentiment here is to only include Brian's item #1, i.e., to allow only purely "static context" code prior to what is to remain a single super()/this() call. I think this is being too conservative but that's just my one opinion.<br></div><div><br></div><div>Do we have official agreement on this? I'm happy to keep arguing if not :)<br></div><div><br></div><div>-Archie<br></div><br>-- <br><div dir="ltr" class="gmail_signature">Archie L. Cobbs<br></div></div>