0

亲爱的 SOF 成员们您好!

我在寻找什么? 我一直在网上搜索和搜索如何在类上实现/注入接口(当然已经编译)并通过类上的接口添加所需的方法。我也一直在尝试尽可能多地学习 BCEL 和 ASM,但我的资源很少(即使是我亲爱的朋友 Google),所以我希望我能在这里找到帮助!我不希望你用勺子喂我或任何东西,但我需要一些指导!:) 我知道 ASM 网站上有那本很棒的书,还有很多关于它们的教程,但我就是想不通我怎么可能像我之前所说的那样添加它的接口/方法。 我尝试了什么?我在这里 找到了这个链接但它并没有像我预期的那样工作..我确切地知道我想做什么,但我不知道我怎样才能实现它..这里的例子!

public class Cat {
 public int age;
}

public interface Animal {
 public int getAge();
}

继承人该方法的实现:

public int getAge(){
 return age;
}

亲爱的 SOF 成员,这将如何解决?

4

1 回答 1

0

我有一些使用 BCEL 的经验,你想要的是从一个自定义类加载器开始,它检测你想要重新定义的类;对于每个这样的类,获取 BCEL JavaClass 对象(使用 ClassLoaderRepository),然后根据自己的喜好修改该类。完成后,从 JavaClass 中获取类文件并使用 ClassLoader#defineClass 将其传递给 JVM 进行定义。

现在,为了实现实际的方法,我建议编写一个包含您的代码的测试类,然后在生成的类文件上运行 BCELifier,这将打印出生成该类文件所需的 Java BCEL 源代码。检查它并根据自己的喜好复制粘贴。

于 2011-12-07T14:29:12.630 回答