Reflection.smali
.class public Lcom/cleanmaster/hpsharelib/webview/Reflection;
.super Ljava/lang/Object;
.source "Reflection.java"
# annotations
.annotation runtime Ljava/lang/Deprecated;
.end annotation
# instance fields
.field private mClass:Ljava/lang/Class;
.annotation system Ldalvik/annotation/Signature;
value = {
"Ljava/lang/Class",
"<*>;"
}
.end annotation
.end field
.field private final mInstance:Ljava/lang/Object;
.field private mIsAccessible:Z
.field private mIsStatic:Z
.field private final mMethodName:Ljava/lang/String;
.field private mParameterClasses:Ljava/util/List;
.annotation system Ldalvik/annotation/Signature;
value = {
"Ljava/util/List",
"<",
"Ljava/lang/Class",
"<*>;>;"
}
.end annotation
.end field
.field private mParameters:Ljava/util/List;
.annotation system Ldalvik/annotation/Signature;
value = {
"Ljava/util/List",
"<",
"Ljava/lang/Object;",
">;"
}
.end annotation
.end field
# direct methods
.method private constructor <init>(Ljava/lang/Object;Ljava/lang/String;)V
.registers 4
.prologue
.line 18
invoke-direct {p0}, Ljava/lang/Object;-><init>()V
.line 19
iput-object p1, p0, Lcom/cleanmaster/hpsharelib/webview/Reflection;->mInstance:Ljava/lang/Object;
.line 20
iput-object p2, p0, Lcom/cleanmaster/hpsharelib/webview/Reflection;->mMethodName:Ljava/lang/String;
.line 22
new-instance v0, Ljava/util/ArrayList;
invoke-direct {v0}, Ljava/util/ArrayList;-><init>()V
iput-object v0, p0, Lcom/cleanmaster/hpsharelib/webview/Reflection;->mParameterClasses:Ljava/util/List;
.line 23
new-instance v0, Ljava/util/ArrayList;
invoke-direct {v0}, Ljava/util/ArrayList;-><init>()V
iput-object v0, p0, Lcom/cleanmaster/hpsharelib/webview/Reflection;->mParameters:Ljava/util/List;
.line 25
if-eqz p1, :cond_1e
invoke-virtual {p1}, Ljava/lang/Object;->getClass()Ljava/lang/Class;
move-result-object v0
:goto_1b
iput-object v0, p0, Lcom/cleanmaster/hpsharelib/webview/Reflection;->mClass:Ljava/lang/Class;
.line 26
return-void
.line 25
:cond_1e
const/4 v0, 0x0
goto :goto_1b
.end method
.method private execute()Ljava/lang/Object;
.registers 4
.annotation system Ldalvik/annotation/Throws;
value = {
Ljava/lang/Exception;
}
.end annotation
.prologue
.line 47
iget-object v0, p0, Lcom/cleanmaster/hpsharelib/webview/Reflection;->mParameterClasses:Ljava/util/List;
invoke-interface {v0}, Ljava/util/List;->size()I
move-result v0
new-array v0, v0, [Ljava/lang/Class;
.line 48
iget-object v1, p0, Lcom/cleanmaster/hpsharelib/webview/Reflection;->mParameterClasses:Ljava/util/List;
invoke-interface {v1, v0}, Ljava/util/List;->toArray([Ljava/lang/Object;)[Ljava/lang/Object;
move-result-object v0
check-cast v0, [Ljava/lang/Class;
.line 50
iget-object v1, p0, Lcom/cleanmaster/hpsharelib/webview/Reflection;->mClass:Ljava/lang/Class;
iget-object v2, p0, Lcom/cleanmaster/hpsharelib/webview/Reflection;->mMethodName:Ljava/lang/String;
invoke-direct {p0, v1, v2, v0}, Lcom/cleanmaster/hpsharelib/webview/Reflection;->getDeclaredMethodWithTraversal(Ljava/lang/Class;Ljava/lang/String;[Ljava/lang/Class;)Ljava/lang/reflect/Method;
move-result-object v0
.line 52
iget-boolean v1, p0, Lcom/cleanmaster/hpsharelib/webview/Reflection;->mIsAccessible:Z
if-eqz v1, :cond_20
.line 53
const/4 v1, 0x1
invoke-virtual {v0, v1}, Ljava/lang/reflect/Method;->setAccessible(Z)V
.line 56
:cond_20
iget-object v1, p0, Lcom/cleanmaster/hpsharelib/webview/Reflection;->mParameters:Ljava/util/List;
invoke-interface {v1}, Ljava/util/List;->toArray()[Ljava/lang/Object;
move-result-object v1
.line 58
iget-boolean v2, p0, Lcom/cleanmaster/hpsharelib/webview/Reflection;->mIsStatic:Z
if-eqz v2, :cond_30
.line 59
const/4 v2, 0x0
invoke-virtual {v0, v2, v1}, Ljava/lang/reflect/Method;->invoke(Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;
move-result-object v0
.line 61
:goto_2f
return-object v0
:cond_30
iget-object v2, p0, Lcom/cleanmaster/hpsharelib/webview/Reflection;->mInstance:Ljava/lang/Object;
invoke-virtual {v0, v2, v1}, Ljava/lang/reflect/Method;->invoke(Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;
move-result-object v0
goto :goto_2f
.end method
.method public static execute(Ljava/lang/Object;Ljava/lang/String;)V
.registers 3
.prologue
.line 29
:try_start_0
new-instance v0, Lcom/cleanmaster/hpsharelib/webview/Reflection;
invoke-direct {v0, p0, p1}, Lcom/cleanmaster/hpsharelib/webview/Reflection;-><init>(Ljava/lang/Object;Ljava/lang/String;)V
invoke-direct {v0}, Lcom/cleanmaster/hpsharelib/webview/Reflection;->setAccessible()Lcom/cleanmaster/hpsharelib/webview/Reflection;
move-result-object v0
invoke-direct {v0}, Lcom/cleanmaster/hpsharelib/webview/Reflection;->execute()Ljava/lang/Object;
:try_end_c
.catch Ljava/lang/Exception; {:try_start_0 .. :try_end_c} :catch_d
.line 32
:goto_c
return-void
.line 30
:catch_d
move-exception v0
goto :goto_c
.end method
.method private varargs getDeclaredMethodWithTraversal(Ljava/lang/Class;Ljava/lang/String;[Ljava/lang/Class;)Ljava/lang/reflect/Method;
.registers 5
.annotation system Ldalvik/annotation/Signature;
value = {
"(",
"Ljava/lang/Class",
"<*>;",
"Ljava/lang/String;",
"[",
"Ljava/lang/Class",
"<*>;)",
"Ljava/lang/reflect/Method;"
}
.end annotation
.annotation system Ldalvik/annotation/Throws;
value = {
Ljava/lang/NoSuchMethodException;
}
.end annotation
.prologue
.line 66
.line 68
:goto_0
if-eqz p1, :cond_d
.line 70
:try_start_2
invoke-virtual {p1, p2, p3}, Ljava/lang/Class;->getDeclaredMethod(Ljava/lang/String;[Ljava/lang/Class;)Ljava/lang/reflect/Method;
:try_end_5
.catch Ljava/lang/NoSuchMethodException; {:try_start_2 .. :try_end_5} :catch_7
move-result-object v0
return-object v0
.line 71
:catch_7
move-exception v0
.line 72
invoke-virtual {p1}, Ljava/lang/Class;->getSuperclass()Ljava/lang/Class;
move-result-object p1
goto :goto_0
.line 76
:cond_d
new-instance v0, Ljava/lang/NoSuchMethodException;
invoke-direct {v0}, Ljava/lang/NoSuchMethodException;-><init>()V
throw v0
.end method
.method private setAccessible()Lcom/cleanmaster/hpsharelib/webview/Reflection;
.registers 2
.prologue
.line 34
const/4 v0, 0x1
iput-boolean v0, p0, Lcom/cleanmaster/hpsharelib/webview/Reflection;->mIsAccessible:Z
.line 36
return-object p0
.end method
.method private setStatic(Ljava/lang/Class;)Lcom/cleanmaster/hpsharelib/webview/Reflection;
.registers 3
.annotation system Ldalvik/annotation/Signature;
value = {
"(",
"Ljava/lang/Class",
"<*>;)",
"Lcom/cleanmaster/hpsharelib/webview/Reflection;"
}
.end annotation
.prologue
.line 40
const/4 v0, 0x1
iput-boolean v0, p0, Lcom/cleanmaster/hpsharelib/webview/Reflection;->mIsStatic:Z
.line 41
iput-object p1, p0, Lcom/cleanmaster/hpsharelib/webview/Reflection;->mClass:Ljava/lang/Class;
.line 43
return-object p0
.end method