Java bytecode asm - лучший способ справиться со ссылкой на подкласс в заменяемом классе?

Я заменил класс на SimpleRemapper просто для того, чтобы изменить имя класса. Однако у меня возникла проблема с классом, у которого есть метод со ссылкой на подкласс. Например,

public class Target {
  public void func(TargetSubclass other) {
    assert (other.isInstanceOf[Target]) 
  }
}

После того, как класс Target становится ClonedTarget, происходит сбой, поскольку класс TargetSubclass НЕ является дочерним по отношению к ClonedTarget.

Как лучше всего решить эту проблему?

Я думал о динамическом обнаружении такого класса и создании клона того, который расширяет клон текущего класса (ClonedTargetSubclass extends ClonedTarget). Но я понял, что это может усложниться, если TargetSubclass не является прямым потомком Target, а скорее великим ребенком и т. д.


person Kevin JJ    schedule 11.08.2020    source источник
comment
Клонирование всей иерархии классов — единственный надежный способ. Все другие решения будут ограничены определенными вариантами использования (и мы ничего не знаем о вашем). кстати, (other.isInstanceOf[Target]) должно означать other instanceof Target;?   -  person Holger    schedule 14.08.2020