8245958: j.l.Record need to mention that canonical constructor may not be public

Reviewed-by: mchung
This commit is contained in:
Vicente Romero 2020-06-09 10:31:05 -04:00
parent ac906168c8
commit 59428f4a0d

View File

@ -46,20 +46,21 @@ package java.lang;
* record components are declared in the record header. The list of record * record components are declared in the record header. The list of record
* components declared in the record header form the <em>record descriptor</em>. * components declared in the record header form the <em>record descriptor</em>.
* *
* <p>A record class has the following mandated members: a public <em>canonical * <p>A record class has the following mandated members: a <em>canonical
* constructor</em>, whose descriptor is the same as the record descriptor; * constructor</em>, which must provide at least as much access as the record
* class and whose descriptor is the same as the record descriptor;
* a private final field corresponding to each component, whose name and * a private final field corresponding to each component, whose name and
* type are the same as that of the component; a public accessor method * type are the same as that of the component; a public accessor method
* corresponding to each component, whose name and return type are the same as * corresponding to each component, whose name and return type are the same as
* that of the component. If not explicitly declared in the body of the record, * that of the component. If not explicitly declared in the body of the record,
* implicit implementations for these members are provided. * implicit implementations for these members are provided.
* *
* <p>The implicit declaration of the canonical constructor initializes the * <p>The implicit declaration of the canonical constructor has the same accessibility
* component fields from the corresponding constructor arguments. The implicit * as the record class and initializes the component fields from the corresponding
* declaration of the accessor methods returns the value of the corresponding * constructor arguments. The implicit declaration of the accessor methods returns
* component field. The implicit declaration of the {@link Object#equals(Object)}, * the value of the corresponding component field. The implicit declaration of the
* {@link Object#hashCode()}, and {@link Object#toString()} methods are derived * {@link Object#equals(Object)}, {@link Object#hashCode()}, and {@link Object#toString()}
* from all of the component fields. * methods are derived from all of the component fields.
* *
* <p>The primary reasons to provide an explicit declaration for the * <p>The primary reasons to provide an explicit declaration for the
* canonical constructor or accessor methods are to validate constructor * canonical constructor or accessor methods are to validate constructor