Step 1: Get the instance of ClassPool.
ClassPool pool = ClassPool.getDefault();
ClassPool is the root class that controls the byte code modifications. It is a container of CtClass objects (CtClass object represent a class file).
Step 2: Use 'makeClass' method to define a class.
CtClass ctClass = pool.makeClass("com.sample.app.model.Point");
Find the below working applicatin.
package com.sample.app;
import javassist.ClassPool;
import javassist.CtClass;
public class App {
public static void main(String args[]) throws Exception {
ClassPool pool = ClassPool.getDefault();
CtClass ctClass = pool.makeClass("com.sample.app.model.Point");
Object obj = ctClass.toClass().newInstance();
System.out.println("Class Name : " + obj.getClass());
ctClass.writeFile("/Users/Shared/assistDemos");
}
}
Run App.java, you will see below message in console.
Class Name : class com.sample.app.model.Point
You can observe Point.class file is generated at folder /Users/Shared/assistDemos.
$ tree /Users/Shared/assistDemos
/Users/Shared/assistDemos
└── com
└── sample
└── app
└── model
└── Point.class
4 directories, 1 file
Open the .class file in java decompiler to see the source code.
No comments:
Post a Comment