Вы можете использовать Javassist
или любое другое третье лицо.
Здесь я показываю это с Javassist.
Javassist deals with Java bytecode through .class files.
Если у вас есть проект Maven, добавьте эту зависимость в pom.xml
:
<dependency>
<groupId>javassist</groupId>
<artifactId>javassist</artifactId>
<version>3.12.1.GA</version>
</dependency>
или загрузите jar отсюда: mvnrepository
Я предоставил пример кода для понимания:
package test;
import java.io.IOException;
import javassist.CannotCompileException;
import javassist.ClassPool;
import javassist.CtClass;
import javassist.CtMethod;
import javassist.NotFoundException;
class class_name {
public static void method_name() {
method1();
method2();
method3();
}
public static void method1() {
System.out.println("In method1");
}
public static void method2() {
System.out.println("In method2");
}
public static void method3() {
System.out.println("In method3");
}
}
public class Testing {
public static void main(String args[]) throws NotFoundException, CannotCompileException, IOException {
ClassPool pool = ClassPool.getDefault();
CtClass ctClass = pool.get("test.class_name");
ctClass.defrost();
CtMethod ctMethod = ctClass.getDeclaredMethod("method_name");
ctMethod.setBody("{ method1();\r\n" + "method3(); }");
ctClass.writeFile(".");
ctClass.toClass();
class_name className = new class_name();
class_name.method_name();
}
}
Вывод:
In method1
In method3
В библиотеке много функций.Итак, прочитайте документацию.
См. Документацию Javassist: Документ Javassist
Надеюсь, это поможет вам.
Спасибо:)