mirror of
https://github.com/revanced/smali.git
synced 2025-04-30 22:54:27 +02:00
138 lines
3.4 KiB
Smali
138 lines
3.4 KiB
Smali
.class public LMain;
|
|
.super Ljava/lang/Object;
|
|
|
|
|
|
#expected output:
|
|
#@ClassAnnotation()
|
|
#@MethodAnnotation()
|
|
#@FieldAnnotation()
|
|
#@ParameterAnnotation()
|
|
|
|
|
|
.method public static main([Ljava/lang/String;)V
|
|
.registers 1
|
|
|
|
invoke-static {}, LMain;->testClassAnnotation()V
|
|
|
|
invoke-static {}, LMain;->testMethodAnnotation()V
|
|
|
|
invoke-static {}, LMain;->testFieldAnnotation()V
|
|
|
|
const-string v0, ""
|
|
|
|
invoke-static {v0}, LMain;->testParameterAnnotation(Ljava/lang/String;)V
|
|
|
|
return-void
|
|
.end method
|
|
|
|
.annotation runtime LClassAnnotation;
|
|
.end annotation
|
|
|
|
.method public static testClassAnnotation()V
|
|
.registers 3
|
|
|
|
sget-object v0, Ljava/lang/System;->out:Ljava/io/PrintStream;
|
|
|
|
const-class v1, LMain;
|
|
const-class v2, LClassAnnotation;
|
|
|
|
invoke-virtual {v1, v2}, Ljava/lang/Class;->getAnnotation(Ljava/lang/Class;)Ljava/lang/annotation/Annotation;
|
|
move-result-object v1
|
|
|
|
invoke-virtual {v0, v1}, Ljava/io/PrintStream;->println(Ljava/lang/Object;)V
|
|
|
|
return-void
|
|
.end method
|
|
|
|
|
|
|
|
.method public static testMethodAnnotation()V
|
|
.registers 4
|
|
|
|
.annotation runtime LMethodAnnotation;
|
|
.end annotation
|
|
|
|
sget-object v0, Ljava/lang/System;->out:Ljava/io/PrintStream;
|
|
|
|
const-class v1, LMain;
|
|
const-string v2, "testMethodAnnotation"
|
|
|
|
const/4 v3, 0
|
|
new-array v3, v3, [Ljava/lang/Class;
|
|
|
|
invoke-virtual {v1, v2, v3}, Ljava/lang/Class;->getMethod(Ljava/lang/String;[Ljava/lang/Class;)Ljava/lang/reflect/Method;
|
|
move-result-object v1
|
|
|
|
const-class v2, LMethodAnnotation;
|
|
|
|
invoke-virtual {v1, v2}, Ljava/lang/reflect/Method;->getAnnotation(Ljava/lang/Class;)Ljava/lang/annotation/Annotation;
|
|
move-result-object v1
|
|
|
|
invoke-virtual {v0, v1}, Ljava/io/PrintStream;->println(Ljava/lang/Object;)V
|
|
|
|
return-void
|
|
.end method
|
|
|
|
|
|
.field public static fieldAnnotationTest:Ljava/lang/Object;
|
|
.annotation runtime LFieldAnnotation;
|
|
.end annotation
|
|
.end field
|
|
|
|
.method public static testFieldAnnotation()V
|
|
.registers 3
|
|
|
|
sget-object v0, Ljava/lang/System;->out:Ljava/io/PrintStream;
|
|
|
|
const-class v1, LMain;
|
|
const-string v2, "fieldAnnotationTest"
|
|
|
|
invoke-virtual {v1, v2}, Ljava/lang/Class;->getField(Ljava/lang/String;)Ljava/lang/reflect/Field;
|
|
move-result-object v1
|
|
|
|
const-class v2, LFieldAnnotation;
|
|
|
|
invoke-virtual {v1, v2}, Ljava/lang/reflect/Field;->getAnnotation(Ljava/lang/Class;)Ljava/lang/annotation/Annotation;
|
|
move-result-object v1
|
|
|
|
invoke-virtual {v0, v1}, Ljava/io/PrintStream;->println(Ljava/lang/Object;)V
|
|
|
|
return-void
|
|
.end method
|
|
|
|
|
|
.method public static testParameterAnnotation(Ljava/lang/String;)V
|
|
.registers 6
|
|
|
|
.param p0 # Ljava/lang/String;
|
|
.annotation runtime LParameterAnnotation;
|
|
.end annotation
|
|
.end param
|
|
|
|
|
|
sget-object v0, Ljava/lang/System;->out:Ljava/io/PrintStream;
|
|
|
|
const-class v1, LMain;
|
|
const-string v2, "testParameterAnnotation"
|
|
|
|
const/4 v3, 1
|
|
new-array v3, v3, [Ljava/lang/Class;
|
|
|
|
const-class v4, Ljava/lang/String;
|
|
const/4 v5, 0
|
|
aput-object v4, v3, v5
|
|
|
|
invoke-virtual {v1, v2, v3}, Ljava/lang/Class;->getMethod(Ljava/lang/String;[Ljava/lang/Class;)Ljava/lang/reflect/Method;
|
|
move-result-object v1
|
|
|
|
|
|
invoke-virtual {v1}, Ljava/lang/reflect/Method;->getParameterAnnotations()[[Ljava/lang/annotation/Annotation;
|
|
move-result-object v1
|
|
|
|
aget-object v1, v1, v5
|
|
aget-object v1, v1, v5
|
|
|
|
invoke-virtual {v0, v1}, Ljava/io/PrintStream;->println(Ljava/lang/Object;)V
|
|
|
|
return-void
|
|
.end method |