| // Copyright (c) 2021, the R8 project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| package records; |
| |
| import java.lang.annotation.Retention; |
| import java.lang.annotation.RetentionPolicy; |
| |
| public class EmptyRecordAnnotation { |
| |
| record Empty() {} |
| |
| @Retention(RetentionPolicy.RUNTIME) |
| @interface ClassAnnotation { |
| Class<? extends Record> theClass(); |
| } |
| |
| @ClassAnnotation(theClass = Record.class) |
| public static void annotatedMethod1() {} |
| |
| @ClassAnnotation(theClass = Empty.class) |
| public static void annotatedMethod2() {} |
| |
| public static void main(String[] args) throws Exception { |
| Class<?> annotatedMethod1Content = |
| EmptyRecordAnnotation.class |
| .getDeclaredMethod("annotatedMethod1") |
| .getAnnotation(ClassAnnotation.class) |
| .theClass(); |
| System.out.println(annotatedMethod1Content); |
| Class<?> annotatedMethod2Content = |
| EmptyRecordAnnotation.class |
| .getDeclaredMethod("annotatedMethod2") |
| .getAnnotation(ClassAnnotation.class) |
| .theClass(); |
| System.out.println(annotatedMethod2Content); |
| } |
| } |