On Thu, 10 Feb 2022 05:49:47 GMT, Joe Darcy <da...@openjdk.org> wrote:

> Two changes to the toString output for annotations to give better source 
> fidelity:
> 
> 1) For enum constants, call their name method rather than their toString 
> method. An enum class can override the toString method to print something 
> other than the name.
> 
> 2) Switch from using binary names (names with "$" for nested types) to 
> canonical names (names with "." with nested types)
> 
> Various existing regression tests are updated to accommodate the changes.
> 
> Please also review the CSR:
> https://bugs.openjdk.java.net/browse/JDK-8281568

Changes requested by sbran...@github.com (no known OpenJDK username).

src/java.base/share/classes/sun/reflect/annotation/AnnotationInvocationHandler.java
 line 256:

> 254:         return Objects.toString(finalComponent.getCanonicalName(),
> 255:                                 "<no canonical name>") +
> 256:             arrayBrackets.toString() + ".class";

Since we're using the canonical name now (which takes the array brackets into 
account), can't the whole method be simplified down to the following?

Suggestion:

        return Objects.toString(clazz.getCanonicalName(), "<no canonical 
name>") + ".class";

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

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

Reply via email to