On Mon, 31 May 2021 06:06:37 GMT, Jaroslav Tulach
<[email protected]> wrote:
>> This PR exposes runtime invisible annotations via `Class.getAnnotation` when
>> `-XX:+PreserveAllAnnotations` option is passed to the JVM.
>>
>> Existing `-XX:+PreserveAllAnnotations` option can be very useful for code
>> that needs to access annotations with `RetentionPolicy.CLASS` without the
>> need to parse the .class files manually. While the
>> RuntimeInvisibleAnnotations are kept in the runtime, they are not visible
>> via java.lang.reflect API. I assume that's just an omission.
>>
>> This PR provides a new test and a fix to make `Class.getAnnotation(...)`
>> useful when `-XX:+PreserveAllAnnotations` option is on.
>
> Jaroslav Tulach has refreshed the contents of this pull request, and previous
> commits have been removed. The incremental views will show differences
> compared to the previous content of the PR.
test/jdk/java/lang/annotation/AnnotationType/AnnotationTypeChangedToRuntimeTest.java
line 56:
> 54: @Retention(RUNTIME)
> 55: @AnnB
> 56: public @interface AnnA_v2 {
The `AltClassLoader` uses `AnnA_v2` instead of `AnnA_v1` when loading the
classes and that makes (in cooperation with `-XX:+PreserveAllAnnotations` flag)
the `RuntimeInvisibleAnnotation` visible.
-------------
PR: https://git.openjdk.java.net/jdk/pull/4245