<dependencies>
<dependency>
<groupId>org.javassist</groupId>
<artifactId>javassist</artifactId>
<version>3.27.0-GA</version>
</dependency>
</dependencies>
import javassist.*;
public class JavassistExample {
// ...
}
ClassPool classPool = ClassPool.getDefault();
CtClass ctClass = classPool.get("com.example.Person");
CtMethod newMethod = CtNewMethod.make(
"public void sayHello() { System.out.println(\"Hello!\"); }",
ctClass
);
ctClass.addMethod(newMethod);
Class<?> modifiedClass = ctClass.toClass();
Object personObject = modifiedClass.newInstance();
java.lang.reflect.Method sayHelloMethod = modifiedClass.getMethod("sayHello");
sayHelloMethod.invoke(personObject);