67,541
社区成员
发帖
与我相关
我的任务
分享
ClassWriter writer = new ClassWriter(ClassWriter.COMPUTE_MAXS);
writer.visit(Opcodes.V1_5, Opcodes.ACC_PUBLIC + Opcodes.ACC_SUPER, "chdw/A", null,
"java/lang/Object", new String[0]);
writer.visitSource("Simple.java", null);
MethodVisitor methodVisitor = writer.visitMethod(Opcodes.ACC_PUBLIC, "<init>", "()V", null, null);
methodVisitor.visitCode();
methodVisitor.visitVarInsn(Opcodes.ALOAD, 0);
methodVisitor.visitMethodInsn(Opcodes.INVOKESPECIAL, "java/lang/Object", "<init>", "()V");
methodVisitor.visitInsn(Opcodes.RETURN);
methodVisitor.visitMaxs(0, 0);
methodVisitor.visitEnd();
final byte[] b = writer.toByteArray();
Class clz = new ClassLoader() {
@Override
public Class<?> loadClass(String name) throws ClassNotFoundException {
if(name.equals("chdw.A"))
return defineClass("chdw.A", b, 0, b.length);
else
return super.loadClass(name);
}
}.loadClass("chdw.A");
System.out.println(clz.newInstance().getClass().getName());
BeanGenerator gen = new BeanGenerator() {
{
setNamePrefix("chdw.Object");
}
};
gen.addProperty("A", String.class);
gen.setSuperclass(Object.class);
System.out.println(gen.createClass());