RFR [14] 8235550: Clarify record reflective support specification
Maurizio Cimadamore
maurizio.cimadamore at oracle.com
Tue Dec 10 14:53:19 UTC 2019
Looks good
Maurizio
On 10/12/2019 14:34, Chris Hegarty wrote:
> Maurizio,
>
>> On 10 Dec 2019, at 12:39, Maurizio Cimadamore
>> <maurizio.cimadamore at oracle.com
>> <mailto:maurizio.cimadamore at oracle.com>> wrote:
>>
>> Looks good.
>>
> Thank you. I updated and finalised the CSR.
>>
>> Minor nits:
>>
>> * in getRecordComponents there are some utterings of "true", "false"
>> and "null" which are not surrounded by a {@code } block.
>>
>> * any reason as to why the j.l.Record class is not cached in a static
>> field?
>>
> No reason. Done.
>
> Changes over the previous webrev:
>
> diff --git a/src/java.base/share/classes/java/lang/Class.java
> b/src/java.base/share/classes/java/lang/Class.java
> --- a/src/java.base/share/classes/java/lang/Class.java
> +++ b/src/java.base/share/classes/java/lang/Class.java
> @@ -2278,9 +2278,9 @@
> * <p> The components are returned in the same order that they
> are declared
> * in the record header. The array is empty if this record class
> has no
> * components. If the class is not a record class, that is {@link
> - * #isRecord()} returns false, then this method returns null.
> Conversely, if
> - * {@link #isRecord()} returns true, then this method returns a
> non-null
> - * value.
> + * #isRecord()} returns {@code false}, then this method returns
> {@code null}.
> + * Conversely, if {@link #isRecord()} returns {@code true}, then
> this method
> + * returns a non-null value.
> *
> * @return An array of {@code RecordComponent} objects
> representing all the
> * record components of this record class, or {@code
> null} if this
> @@ -3596,8 +3596,7 @@
> this.getSuperclass() == java.lang.Enum.class;
> }
>
>
>
> - /** Returns java.lang.Record.class */
> + /** java.lang.Record.class */
> + private static final Class<?> JAVA_LANG_RECORD_CLASS =
> javaLangRecordClass();
> private static Class<?> javaLangRecordClass() {
> try {
> return Class.forName0("java.lang.Record", false, null, null);
> @@ -3631,7 +3630,7 @@
> @jdk.internal.PreviewFeature(feature=jdk.internal.PreviewFeature.Feature.RECORDS,
> essentialAPI=false)
> public boolean isRecord() {
> - return getSuperclass() == javaLangRecordClass() && isRecord0();
> + return getSuperclass() == JAVA_LANG_RECORD_CLASS && isRecord0();
> }
>
>
> // Fetches the factory for reflective objects
> Complete webrev:
> https://cr.openjdk.java.net/~chegar/8235550/webrev.01/
>
> -Chris.
More information about the core-libs-dev
mailing list