如果是一般java程序,不追求性能极致,想使用方便,推荐使用 Javassist 库。
如果是android程序,或者一般java程序欲追求性能极限,推荐使用 asm for java 及 asmdex for android。 但使用上比较麻烦一点,需要了解一些jvm底层机制。
ASM在创建class字节码的过程中,操纵的级别是底层JVM的汇编指令级别,这要求ASM使用者要对class组织结构和JVM汇编指令有一定的了解。ASM 可以直接产生二进制 class 文件,也可以在类被加载入 Java 虚拟机之前动态改变类行为。ASM 从类文件中读入信息后,能够改变类行为,分析类信息,甚至能够根据用户要求生成新类。