Как динамически модифицировать суперклассы класса, используя asm или javassist - PullRequest
0 голосов
/ 25 мая 2018

Как динамически изменять суперклассы класса, чтобы указывать на другой класс в качестве его суперкласса с помощью asm или javassist?

Я знаю, как изменять методы и поля класса.

1 Ответ

0 голосов
/ 28 мая 2018

Вы должны взглянуть на setSuperclass.Вот небольшой пример:

CtClass c = pool.getCtClass("com.my.class.A"); 
c.setSuperclass(pool.getCtClass("com.my.class.B"));

Здесь - документация для этого метода:

public void setSuperclass (CtClass clazz) throws CannotCompileException

Изменяет суперкласс, если этот объект не представляет интерфейс.Новый суперкласс должен быть совместим со старым;например, он должен наследовать от старого суперкласса.

Если этот объект представляет интерфейс, этот метод эквивалентен addInterface ();он добавляет clazz к списку суперинтерфейсов, расширенных этим интерфейсом.Обратите внимание, что интерфейс может расширять несколько суперинтерфейсов.

...