在Java类中注入方法

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

我知道我需要为此使用ASM。我厌倦了阅读一些教程,但是其中大多数教程已经过时或不支持我想做的事情。

我有一个jar文件,我想向某个类添加某个方法,然后在该类中已经存在的另一个方法的开头添加该方法。

所以让我们说原始类的反编译代码看起来像这样:

public class Addon {
   public void enable(){
       //code
   }
}

而且我想使它看起来像这样:

public class Addon {
   public void enable(){
       setupEnv();
       //code
   }

   public void setupEnv(){
     //setup env
   }
}

而且setupEnv()方法已经存在于我的一个类中因此,基本上我需要从自己的程序中读取setupEnv()方法,然后将其注入另一个jar中的另一个类。

java java-bytecode-asm
1个回答
0
投票

为什么您需要为此使用ASM?您可以使用许多其他更简单的方法。

  1. 如果不是最终版本,请扩展Addon并使用它/使用接口
  2. 在调用setupEnv之前使用Java代理来调用enable
  3. 使用装饰图案
  4. 使用java agent instrumentation
  5. 依此类推

ASM和类似技术应该是您的最后选择。

© www.soinside.com 2019 - 2024. All rights reserved.