Я создаю инструмент поиска зависимостей, используя 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 () работает нормально, поскольку он обеспечивает доступ к информации общего типа через параметр подписи.Только в неявном случае, когда локальная переменная не объявлена, я не могу найти способ доступа к параметрам универсального типа.
Я предполагаюесть некоторый способ доступа к атрибуту класса с общей информацией для этого кода, но я не уверен, как это сделать.
Спасибо за любую помощь !!