<html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; line-break: after-white-space;" class=""><br class=""><div><br class=""><blockquote type="cite" class=""><div class="">On 31 Oct 2019, at 17:14, Maurizio Cimadamore <<a href="mailto:maurizio.cimadamore@oracle.com" class="">maurizio.cimadamore@oracle.com</a>> wrote:</div><br class="Apple-interchange-newline"><div class=""><br style="caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 14px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none;" class=""><span style="caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 14px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none; float: none; display: inline !important;" class="">On 31/10/2019 16:11, Chris Hegarty wrote:</span><br style="caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 14px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none;" class=""><blockquote type="cite" style="font-family: Helvetica; font-size: 14px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; text-decoration: none;" class=""><br class=""><blockquote type="cite" class="">On 31 Oct 2019, at 15:29, Brian Goetz <<a href="mailto:brian.goetz@oracle.com" class="">brian.goetz@oracle.com</a>> wrote:<br class=""><br class=""><blockquote type="cite" class="">"It is a compile-time error for a record declaration to declare a record component with the name |clone|, |finalize|, |getClass|, |hashCode|, |notify|, |notifyAll|, |readObjectNoData|, |readResolve|, |serialPersistentFields|, |serialVersionUID|, |toString|, |wait|, or |writeReplace|."<br class=""><br class="">Chris says that the serialization spec ignores all the serialization-related methods if they appear inside a record; should we lift the restrictions?<br class=""></blockquote>But, I think we later decided we are not ignoring _all_ of the serialization-related methods — that a readResolve() method is OK.<br class=""></blockquote><br class="">FTR<br class=""><br class="">For records, the serialization runtime does consider the following:<br class=""><br class="">  1) writeReplace(), readResolve(), and<br class="">  2) the serialVersionUID field<br class=""><br class="">The serialization runtime ignores the following:<br class=""><br class="">  a) writeObject, writeObjectNoData, readObject, and<br class="">  b) serialPersistentFields, and<br class="">  c) writeExternal and readExternal - for what they’re worth!<br class=""></blockquote><br style="caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 14px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none;" class=""><span style="caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 14px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none; float: none; display: inline !important;" class="">Ok, so, error on (1) and (2) and warnings in all the other cases?</span><br style="caret-color: rgb(0, 0, 0); font-family: Helvetica; font-size: 14px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none;" class=""></div></blockquote></div><br class=""><div class="">In terms of restrictions on record component name...</div><div class=""><br class=""></div><div class=""> - 1 and 2 should be errors</div><div class=""> - I think that a, b, and c, should probably be errors too. It would be super confusing to the reader to see component, field, accessors, names with such names. But if not errors, warnings would be good.</div><div class=""><br class=""></div><div class="">In terms of javac restrictions in the record declaration…</div><div class=""><br class=""></div><div class=""> - 1 and 2 much be allowable, no issue</div><div class=""> - a, b, and c, should be lint warnings.</div><div class=""><br class=""></div><div class="">-Chris.</div><div class=""><br class=""></div></body></html>