<html><body><div style="font-family: arial, helvetica, sans-serif; font-size: 12pt; color: #000000"><div><br></div><div><br></div><hr id="zwchr" data-marker="__DIVIDER__"><div data-marker="__HEADERS__"><blockquote style="border-left:2px solid #1010FF;margin-left:5px;padding-left:5px;color:#000;font-weight:normal;font-style:normal;text-decoration:none;font-family:Helvetica,Arial,sans-serif;font-size:12pt;"><b>De: </b>"Kevin Bourrillion" <kevinb@google.com><br><b>À: </b>"Brian Goetz" <brian.goetz@oracle.com><br><b>Cc: </b>"amber-spec-experts" <amber-spec-experts@openjdk.java.net><br><b>Envoyé: </b>Vendredi 16 Mars 2018 23:36:53<br><b>Objet: </b>Re: Records -- current status<br></blockquote></div><div data-marker="__QUOTED_TEXT__"><br class="gmail_quote"><div>[...]<br data-mce-bogus="1"></div><div><br data-mce-bogus="1"></div><blockquote style="border-left:2px solid #1010FF;margin-left:5px;padding-left:5px;color:#000;font-weight:normal;font-style:normal;text-decoration:none;font-family:Helvetica,Arial,sans-serif;font-size:12pt;"><div dir="ltr"><div class="gmail_extra"><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div><br><span class="">
    <br>
    <blockquote><div dir="ltr"><div class="gmail_extra"><div class="gmail_quote"><div>OK, but
              do  you have an opinion on whether records should
              automatically acquire a clone() implementation?  <br></div><div><br></div><div>As much as possible we'll encourage all-final,
              array-free records that have no need to be cloned, but
              some number of records will go against that, and I guess
              it's better that they have clone() than that they don't.
              But my concern is: What does it do -- deep-clone arrays
              but shallow-clone everything else? Sounds problematic no
              matter which way you decide it.<br class="m_3848697546723567125gmail-Apple-interchange-newline"></div></div><br></div></div></blockquote></span>
    Yes, that's the question.  One possibility is just to always clone
    shallowly; this is not as dumb as it sounds, since the fields are
    already exposed for read, and therefore any deep mutability is
    already flapping in the wind.  <br></div></blockquote><br><div>Okay, I guess that's the right move because you kinda want `record.clone().equals(record)`. But a user's assumption that `record.clone()` would deep-clone the array might be the entire reason they're using clone() at all. Oh well, it's not like we'd be making arrays awful for the first time.</div></div></div></div></blockquote><div><br></div><div>There is no need to have a clone because clone == constructor(de-constructor()),<br data-mce-bogus="1"></div>And this is true for the serialization too, once you have a de-constructor and a constructor you can serialize the data in the middle, as you can do a shallow copy or a deep copy in the middle.<br data-mce-bogus="1"></div><div data-marker="__QUOTED_TEXT__"><br data-mce-bogus="1"></div><div data-marker="__QUOTED_TEXT__">Rémi<br data-mce-bogus="1"></div><div data-marker="__QUOTED_TEXT__"><br data-mce-bogus="1"></div></div></body></html>