我正在尝试使用 smali 执行以下操作:
- 将私有实例
ArrayList
字段添加到类 - 在类的构造函数中实例化实例字段
add
在类的方法之一中对字段进行操作。
这些是相关的代码片段。(我的班级名称是com.mypackage.MyClass
(即com/mypackage/MyClass
))
在# instance fields
smali 代码部分,我添加了该行
.field private myList:Ljava/util/List;
在公共构造方法(.method public constructor <init>()V
)中,我添加了这些行
new-instance v1, Ljava/util/ArrayList;
invoke-direct {v1}, Ljava/util/ArrayList;-><init>()V
iput-object v1, p0, Lcom/mypackage/MyClass;->myList:Ljava/util/List;
最后,在我想要执行add
方法调用的实例方法中,我添加了这些行
iget-object v6, p0, Lcom/mypackage/MyClass;->myList:Ljava/util/List;
invoke-interface {v6, v3}, Ljava/util/List;->add(Ljava/lang/Object;)Z
invoke-interface {v6, v4}, Ljava/util/List;->add(Ljava/lang/Object;)Z
然而,线
iget-object v6, p0, Lcom/mypackage/MyClass;->myList:Ljava/util/List;
给我错误(根据logcat)
10-29 15:47:58.999: W/dalvikvm(518): VFY: 'this' arg 'Ljava/util/List;' not instance of 'Lcom/mypackage/MyClass;'
我将我所做的与在同一方法中的类似方法调用进行了比较,但无法找出问题所在。
任何想法?
谢谢!