javassist提供了一种可以直接修改class的api。
ClassPool pool = ClassPool.getDefault();
//此处填写需要修改的文件的名称
pool.insertClassPath("G:\\TTT\\desktop-1.0");
//此处写明要修改的类的,必须要有完整的package名
CtClass ctClass = pool.get("com.megacrit.cardcrawl.cards.AbstractCard");
/**
在此处对class进行各种修改
*/
//此处填写修改后的文件存放的位置
ctClass.writeFile("C:\\Users\\ningz\\Desktop");
特别注意: 在javassist中修改方法时,当声明变量时需要有完整的包名不能省略,当使用方法中的参数时,按照顺序使用$1,$2,$3…依次排列。