On Sat, 24 Apr 2021 01:32:45 GMT, Tagir F. Valeev <tval...@openjdk.org> wrote:

>> I decided to show a complete static method in the example, so it could be 
>> copied to user utility class as is. Not sure if it's reasonable to add 
>> `assert cls.isRecord();` there. Also I don't know whether there's a 
>> limitation on max characters in the sample code. Probable a line break in 
>> `static <T extends Record>\nConstructor<T> getCanonicalConstructor(Class<T> 
>> cls)` is unnecessary.
>> 
>> ---
>> Aside from this PR, I've found a couple of things to clean up in 
>> `java.lang.Class`:
>> 1. There's erroneous JavaDoc link in `getSimpleName()` JavaDoc (introduced 
>> by @jddarcy in #3038). It should be `#isArray()` instead of `isArray()`.
>> 2. Methods Atomic::casAnnotationType and Atomic::casAnnotationData have 
>> unused type parameters `<T>`.
>> 3. Probably too much but AnnotationData can be nicely converted to a record! 
>> Not sure, probably nobody wants to have `java.lang.Record` initialized too 
>> early or increasing the footprint of such a basic class in the metaspace, so 
>> I don't insist on this.
>> 
>> 
>>     private record AnnotationData(
>>         Map<Class<? extends Annotation>, Annotation> annotations,
>>         Map<Class<? extends Annotation>, Annotation> declaredAnnotations,
>>         // Value of classRedefinedCount when we created this AnnotationData 
>> instance
>>         int redefinedCount) {
>>     }
>> 
>> 
>> Please tell me if it's ok to fix 1 and 2 along with this PR.
>
> Tagir F. Valeev has updated the pull request incrementally with three 
> additional commits since the last revision:
> 
>  - Trailing space removed
>  - Add a reference from java.lang.Record to related Class methods
>  - Fix cosmetic issues

Overall looks fine modulo adding `@apiNote`. Since the changes are all either 
editorial/markup or informational, I don't think this needs a CSR. Well, the 
removal of an unused type variable strictly constitutes a signature change, but 
those methods aren't public APIs so I still think it's ok without a CSR.

src/java.base/share/classes/java/lang/Class.java line 2363:

> 2361:      * Conversely, if {@link #isRecord()} returns {@code true}, then 
> this method
> 2362:      * returns a non-null value.
> 2363:      *

I forgot to mention, this example should be within an `@apiNote`.

-------------

Marked as reviewed by smarks (Reviewer).

PR: https://git.openjdk.java.net/jdk/pull/3556

Reply via email to