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