Есть ли способ узнать, какие классы создаются с помощью `new` при посещении байт-кода? - PullRequest
0 голосов
/ 07 апреля 2019

Я хочу вычислить все зависимости для класса, посетив его байт-код, в ClassVisitor есть посетители для метода, полей, атрибутов и т. Д., Но не могу найти, когда класс используется, вызывая новый конструктор, например, this.add(new MyComponent("Hi")) Мне бы хотелось, чтобы использовался MyComponent, поэтому мне нужно, чтобы эта зависимость была указана в моих результатах.

Кстати, я использую org.objectweb.asm версию 7.1

1 Ответ

1 голос
/ 07 апреля 2019

Я думаю, что вы не можете сделать это напрямую с ClassVisitor, но вам понадобится MethodVisitor.Вы возвращаете экземпляр MethodVisitor из visitMethod вашего ClassVisitor.Там вы можете реализовать метод visitTypeInsn и проверить, является ли параметр opcode == Opcodes.NEW.

void visitTypeInsn(final int opcode, final String type)
...