私はsmaliを使用して次のことを行おうとしています:
ArrayList
クラスにプライベートインスタンスフィールドを追加する- クラスのコンストラクターでインスタンスフィールドをインスタンス化します
add
クラスのメソッドの1つでフィールドに対して操作を実行します。
これらは、関連するコードスニペットです。(私のクラス名はcom.mypackage.MyClass
(ie 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;'
同じメソッドの同様のメソッド呼び出しで行ったことを比較したところ、何が問題だったのか理解できませんでした。
何か案が?
ありがとう!