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