ASM 4.0 を使用して依存関係検索ツールを作成していますが、解決できないまれなケースが見つかりました。私が抱えている問題は、以下のコードで MyClass の使用法を特定することに関係しています。
public void aMethod() {
new ArrayList<? extends MyClass>();
}
ArrayList の使用は MethodVisitor.visitTypeInst() を使用して識別できますが、ジェネリック型パラメーターでの使用を識別するためにそのスコープで使用できるシグネチャ メソッドはありません。ローカル変数が作成されないため、 MethodVisitor.visitLocalVariable() も解決策ではありません。ローカル変数が明示的に宣言されている場合:
public void aMethod() {
ArrayList<? extends MyClass> list = new ArrayList<? extends MyClass>();
}
MethodVistor.visitLocalVariable() は、署名パラメーターを介してジェネリック型情報へのアクセスを提供するため、正常に機能します。ジェネリック型パラメーターにアクセスする方法が見つからないのは、ローカル var が宣言されていない暗黙の場合のみです。
このコードの一般的な情報を使用してクラス属性にアクセスする方法があると想定していますが、これを行う方法がわかりません。
助けてくれてありがとう!!