2012-02-25 6 views
1

Я недавно задал этот вопрос: Best choice? Edit bytecode (asm) or edit java file before compilingКакой API ASM следует использовать?

Я решил использовать ASM.

Теперь, читая документацию, я заметил, что ASM предоставляет 2 API (в Event основе и на основе объектов)

Что бы мне наиболее подходящим API для моей проблемы?

Я думаю о событии. Потому что я хочу найти каждое сравнение/конкретную операцию

Как вы думаете?

+2

«Обработка событий, основанная на обработке памяти: ASM поддерживает как управляемую событиями, так и обработку в памяти. Обработка событий, облегченная, но немного ограничивающая. С другой стороны, при обработке памяти более гибкой и простой в использовании, но он более тяжелый. Процессор памяти внутри использует процессор, управляемый событиями, так же, как парсер DOM XML внутренне использует SAX XML-парсер ». http://www.geekyarticles.com/2011/10/manipulating-java-class-files-with-asm.html – L7ColWinters

ответ

2

Это зависит полностью от типа преобразования, которое вы хотите сделать. Если ваше преобразование должно действовать только на определенные байт-коды одним способом и вставлять код до или после этого байт-кода, то api на основе событий очень прост в использовании.

Дерево на основе api пригодится, когда вам нужна информация о других методах в классе или если вам нужен больше контекста вокруг байт-кода, который вы хотите изменить.

Редактировать: также можно комбинировать оба подхода, сначала построить древовидную структуру и определить некоторую информацию об этом классе, а затем преобразовать этот узел дерева, используя api на основе событий.

+0

Тогда мой вывод был верным. Благодаря! – tgoossens

Смежные вопросы