是否可以使用Javassist将方法从一个类移动/复制到另一个类?
public class A {
public static void test() {
System.out.println("hello world");
}
}
public class B {
// add test() here
}
我尝试过的:
ctClassB.addMethod(ctClassA.getDeclaredMethod("test"));
这导致异常:javassist.CannotCompileException: bad declaring class
。
看着Javassist javadocs,我不认为这是可能的,但是有什么方法可以更改方法的声明类?
构建新的CtMethod似乎正在起作用:
CtMethod method = ctClassA.getDeclaredMethod("test");
ctClassB.addMethod(new CtMethod(method, ctClassB, null));