import org.objectweb.asm.*; public class MyClassGenerator { public static void main(String[] args) { ClassWriter cw = new ClassWriter(ClassWriter.COMPUTE_FRAMES); cw.visit(Opcodes.V1_8, Opcodes.ACC_PUBLIC, "MyClass", null, "java/lang/Object", null); MethodVisitor mv = cw.visitMethod(Opcodes.ACC_PUBLIC, "<init>", "()V", null, null); mv.visitCode(); mv.visitVarInsn(Opcodes.ALOAD, 0); mv.visitMethodInsn(Opcodes.INVOKESPECIAL, "java/lang/Object", "<init>", "()V", false); mv.visitInsn(Opcodes.RETURN); mv.visitMaxs(1, 1); mv.visitEnd(); byte[] bytes = cw.toByteArray(); try { FileOutputStream fos = new FileOutputStream("MyClass.class"); fos.write(bytes); fos.close(); } catch (IOException e) { e.printStackTrace(); } } } import javassist.*; public class MyClassGenerator { public static void main(String[] args) { try { ClassPool pool = ClassPool.getDefault(); CtClass ctClass = pool.makeClass("MyClass"); ctClass.setSuperclass(pool.get("java.lang.Object")); CtConstructor constructor = new CtConstructor(new CtClass[]{}, ctClass); constructor.setBody("{ }"); ctClass.addConstructor(constructor); ctClass.writeFile(); e.printStackTrace(); } } }


上一篇:
下一篇:
切换中文