使用Javassist更改方法的声明类吗?

问题描述 投票:2回答:1

是否可以使用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,我不认为这是可能的,但是有什么方法可以更改方法的声明类?

java javassist
1个回答
0
投票

构建新的CtMethod似乎正在起作用:

CtMethod method = ctClassA.getDeclaredMethod("test");
ctClassB.addMethod(new CtMethod(method, ctClassB, null));
© www.soinside.com 2019 - 2024. All rights reserved.