$ groovyc -v
Groovy compiler version 2.5.7
Copyright 2003-2019 The Apache Software Foundation. http:-------------------------------------------------------------------
$ cat MyAnnotation.groovy
import java.lang.annotation.Retention
import java.lang.annotation.RetentionPolicy
@Retention(RetentionPolicy.SOURCE)
@interface MyAnnotation {}
-------------------------------------------------------------------
$ groovyc MyAnnotation.groovy && javap -private -v MyAnnotation
Classfile /Users/zhb/Projects/tmp/groovy-anno/MyAnnotation.class
Last modified 3 Jul 2019; size 146 bytes
MD5 checksum 485f011b0c78ff7b08bd0e03b1b429cd
Compiled from "MyAnnotation.groovy"
public interface MyAnnotation extends java.lang.annotation.Annotation
minor version: 0
major version: 51
flags: (0x2601) ACC_PUBLIC, ACC_INTERFACE, ACC_ABSTRACT, ACC_ANNOTATION
this_class: #2 super_class: #4 interfaces: 1, fields: 0, methods: 0, attributes: 1
Constant pool:
#1 = Utf8 MyAnnotation
#2 = Class #1 #3 = Utf8 java/lang/Object
#4 = Class #3 #5 = Utf8 java/lang/annotation/Annotation
#6 = Class #5 #7 = Utf8 MyAnnotation.groovy
#8 = Utf8 SourceFile
{
}
SourceFile: "MyAnnotation.groovy"
-------------------------------------------------------------------
$ cat MyJavaAnnotation.java
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
@Retention(RetentionPolicy.SOURCE)
@interface MyJavaAnnotation {}
-------------------------------------------------------------------
$ javac MyJavaAnnotation.java && javap -private -v MyJavaAnnotation
Classfile /Users/zhb/Projects/tmp/groovy-anno/MyJavaAnnotation.class
Last modified 3 Jul 2019; size 292 bytes
MD5 checksum c8ea8afe8f9fe148925db48177207f01
Compiled from "MyJavaAnnotation.java"
interface MyJavaAnnotation extends java.lang.annotation.Annotation
minor version: 0
major version: 55
flags: (0x2600) ACC_INTERFACE, ACC_ABSTRACT, ACC_ANNOTATION
this_class: #1 super_class: #2 interfaces: 1, fields: 0, methods: 0, attributes: 2
Constant pool:
#1 = Class #11 #2 = Class #12 #3 = Class #13 #4 = Utf8 SourceFile
#5 = Utf8 MyJavaAnnotation.java
#6 = Utf8 RuntimeVisibleAnnotations
#7 = Utf8 Ljava/lang/annotation/Retention;
#8 = Utf8 value
#9 = Utf8 Ljava/lang/annotation/RetentionPolicy;
#10 = Utf8 SOURCE
#11 = Utf8 MyJavaAnnotation
#12 = Utf8 java/lang/Object
#13 = Utf8 java/lang/annotation/Annotation
{
}
SourceFile: "MyJavaAnnotation.java"
RuntimeVisibleAnnotations:
0: #7(#8=e#9.#10)
java.lang.annotation.Retention(
value=Ljava/lang/annotation/RetentionPolicy;.SOURCE
)