Home | History | Annotate | Download | only in AnnotationTypes
      1 .class public LMain;
      2 .super Ljava/lang/Object;
      3 
      4 
      5 #expected output:
      6 #@ClassAnnotation()
      7 #@MethodAnnotation()
      8 #@FieldAnnotation()
      9 #@ParameterAnnotation()
     10 
     11 
     12 .method public static main([Ljava/lang/String;)V
     13     .registers 1
     14 
     15     invoke-static {}, LMain;->testClassAnnotation()V
     16 
     17     invoke-static {}, LMain;->testMethodAnnotation()V
     18 
     19     invoke-static {}, LMain;->testFieldAnnotation()V
     20 
     21     const-string v0, ""
     22 
     23     invoke-static {v0}, LMain;->testParameterAnnotation(Ljava/lang/String;)V 
     24 
     25 	return-void
     26 .end method
     27 
     28 .annotation runtime LClassAnnotation;
     29 .end annotation
     30 
     31 .method public static testClassAnnotation()V
     32     .registers 3
     33 
     34     sget-object v0, Ljava/lang/System;->out:Ljava/io/PrintStream;
     35 
     36     const-class v1, LMain;
     37     const-class v2, LClassAnnotation;
     38 
     39     invoke-virtual {v1, v2}, Ljava/lang/Class;->getAnnotation(Ljava/lang/Class;)Ljava/lang/annotation/Annotation;
     40     move-result-object v1
     41 
     42     invoke-virtual {v0, v1}, Ljava/io/PrintStream;->println(Ljava/lang/Object;)V
     43 
     44     return-void
     45 .end method
     46 
     47 
     48 
     49 .method public static testMethodAnnotation()V
     50     .registers 4
     51 
     52     .annotation runtime LMethodAnnotation;
     53     .end annotation
     54 
     55     sget-object v0, Ljava/lang/System;->out:Ljava/io/PrintStream;
     56 
     57     const-class v1, LMain;
     58     const-string v2, "testMethodAnnotation"
     59 
     60     const/4 v3, 0
     61     new-array v3, v3, [Ljava/lang/Class;
     62 
     63     invoke-virtual {v1, v2, v3}, Ljava/lang/Class;->getMethod(Ljava/lang/String;[Ljava/lang/Class;)Ljava/lang/reflect/Method;
     64     move-result-object v1
     65 
     66     const-class v2, LMethodAnnotation;
     67 
     68     invoke-virtual {v1, v2}, Ljava/lang/reflect/Method;->getAnnotation(Ljava/lang/Class;)Ljava/lang/annotation/Annotation;
     69     move-result-object v1
     70 
     71     invoke-virtual {v0, v1}, Ljava/io/PrintStream;->println(Ljava/lang/Object;)V
     72 
     73     return-void
     74 .end method
     75 
     76 
     77 .field public static fieldAnnotationTest:Ljava/lang/Object;
     78     .annotation runtime LFieldAnnotation;
     79     .end annotation
     80 .end field
     81 
     82 .method public static testFieldAnnotation()V
     83     .registers 3
     84 
     85     sget-object v0, Ljava/lang/System;->out:Ljava/io/PrintStream;
     86 
     87     const-class v1, LMain;
     88     const-string v2, "fieldAnnotationTest"
     89 
     90     invoke-virtual {v1, v2}, Ljava/lang/Class;->getField(Ljava/lang/String;)Ljava/lang/reflect/Field;
     91     move-result-object v1
     92 
     93     const-class v2, LFieldAnnotation;
     94 
     95     invoke-virtual {v1, v2}, Ljava/lang/reflect/Field;->getAnnotation(Ljava/lang/Class;)Ljava/lang/annotation/Annotation;
     96     move-result-object v1
     97 
     98     invoke-virtual {v0, v1}, Ljava/io/PrintStream;->println(Ljava/lang/Object;)V
     99 
    100     return-void
    101 .end method
    102 
    103 
    104 .method public static testParameterAnnotation(Ljava/lang/String;)V
    105     .registers 6
    106 
    107     .param p0    # Ljava/lang/String;
    108         .annotation runtime LParameterAnnotation;
    109         .end annotation
    110     .end param
    111 
    112 
    113     sget-object v0, Ljava/lang/System;->out:Ljava/io/PrintStream;
    114 
    115     const-class v1, LMain;
    116     const-string v2, "testParameterAnnotation"
    117 
    118     const/4 v3, 1
    119     new-array v3, v3, [Ljava/lang/Class;
    120 
    121     const-class v4, Ljava/lang/String;
    122     const/4 v5, 0
    123     aput-object v4, v3, v5
    124 
    125     invoke-virtual {v1, v2, v3}, Ljava/lang/Class;->getMethod(Ljava/lang/String;[Ljava/lang/Class;)Ljava/lang/reflect/Method;
    126     move-result-object v1
    127 
    128 
    129     invoke-virtual {v1}, Ljava/lang/reflect/Method;->getParameterAnnotations()[[Ljava/lang/annotation/Annotation;
    130     move-result-object v1
    131 
    132     aget-object v1, v1, v5
    133     aget-object v1, v1, v5
    134 
    135     invoke-virtual {v0, v1}, Ljava/io/PrintStream;->println(Ljava/lang/Object;)V
    136 
    137     return-void
    138 .end method