From f8637cedd514fbf7a89ac02b9e1d2bbf3d3484e8 Mon Sep 17 00:00:00 2001 From: Ben Gruver Date: Sat, 17 Sep 2011 18:01:03 -0400 Subject: [PATCH] Add an example showing how methods can be overriden based on return value --- examples/MethodOverloading/Main.smali | 50 +++++++++++++++++++++++++++ 1 file changed, 50 insertions(+) create mode 100644 examples/MethodOverloading/Main.smali diff --git a/examples/MethodOverloading/Main.smali b/examples/MethodOverloading/Main.smali new file mode 100644 index 00000000..a61303ec --- /dev/null +++ b/examples/MethodOverloading/Main.smali @@ -0,0 +1,50 @@ +.class public LMain; +.super Ljava/lang/Object; + +#expected output: +#returning a string +#42 + +.method public constructor ()V + .registers 1 + invoke-direct {p0}, Ljava/lang/Object;->()V + return-void +.end method + +.method public static main([Ljava/lang/String;)V + .registers 4 + + sget-object v0, Ljava/lang/System;->out:Ljava/io/PrintStream; + + new-instance v1, LMain; + invoke-direct {v1}, LMain;->()V + invoke-virtual {v1}, LMain;->overloadTest()Ljava/lang/String; + move-result-object v2 + + invoke-virtual {v0, v2}, Ljava/io/PrintStream;->println(Ljava/lang/Object;)V + + invoke-virtual {v1}, LMain;->overloadTest()I + move-result v2 + + invoke-static {v2}, Ljava/lang/Integer;->toString(I)Ljava/lang/String; + move-result-object v2 + + invoke-virtual {v0, v2}, Ljava/io/PrintStream;->println(Ljava/lang/Object;)V + + return-void +.end method + + +.method public overloadTest()Ljava/lang/String; + .registers 1 + + const-string v0, "returning a string" + return-object v0 +.end method + +.method public overloadTest()I + .registers 1 + + const v0, 42 + return v0 +.end method \ No newline at end of file