java代码动态生成java的.class文件.doc

java代码动态生成java的.class文件.doc

ID:51690225

大小:59.00 KB

页数:30页

时间:2020-03-15

java代码动态生成java的.class文件.doc_第1页
java代码动态生成java的.class文件.doc_第2页
java代码动态生成java的.class文件.doc_第3页
java代码动态生成java的.class文件.doc_第4页
java代码动态生成java的.class文件.doc_第5页
资源描述:

《java代码动态生成java的.class文件.doc》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、目录需要包:2工具类POBuildUtil2工具类BuildUtil6工具类Assistant8RenderClass:27使用例子:29需要包:1.apache-commons-lang-**.jar2.asm-**.jar工具类POBuildUtilimportjava.io.File;importjava.io.FileOutputStream;importjava.util.Collection;importjava.util.Iterator;importorg.apache.commons.lang.WordUtils;importorg.

2、objectweb.asm.ClassWriter;importorg.objectweb.asm.MethodVisitor;importorg.objectweb.asm.Opcodes;publicclassPOBuildUtilextendsClassLoaderimplementsOpcodes{publicClassbuild(Stringclsname,Stringsavepath,Collectionproperties){Classcls=null;try{Stringclassname=BuildUtil.transferClass

3、Name(clsname);ClassWritercw=newClassWriter(false);cw.visit(V1_1,ACC_PUBLIC,classname,null,"java/lang/Object",null);MethodVisitormw=cw.visitMethod(ACC_PUBLIC,"","()V",null,null);mw.visitVarInsn(ALOAD,0);mw.visitMethodInsn(INVOKESPECIAL,"java/lang/Object","","()V");mw.

4、visitInsn(RETURN);mw.visitMaxs(1,1);mw.visitEnd();BuildPropertyproperty=null;Stringpropertytype=null;Stringpropertyname=null;;Iteratoriterator=properties.iterator();while(iterator.hasNext()){property=(BuildProperty)iterator.next();propertytype=BuildUtil.transferClassName(propert

5、y.getType());propertyname=WordUtils.capitalize(property.getName());//System.out.println(propertyname);cw.visitField(ACC_PRIVATE,property.getName(),"L"+propertytype+";",null,null).visitEnd();mw=cw.visitMethod(ACC_PUBLIC,"get"+propertyname,"()L"+propertytype+";",null,null);mw.visi

6、tCode();mw.visitVarInsn(ALOAD,0);mw.visitFieldInsn(GETFIELD,classname,property.getName(),"L"+propertytype+";");mw.visitInsn(ARETURN);mw.visitMaxs(1,1);mw.visitEnd();mw=cw.visitMethod(ACC_PUBLIC,"set"+propertyname,"(L"+propertytype+";)V",null,null);mw.visitCode();mw.visitVarInsn(

7、ALOAD,0);mw.visitVarInsn(ALOAD,1);mw.visitFieldInsn(PUTFIELD,classname,property.getName(),"L"+propertytype+";");mw.visitMaxs(2,2);mw.visitInsn(RETURN);mw.visitEnd();}cw.visitEnd();byte[]code=cw.toByteArray();if(savepath!=null){Assistant.createNewFile(savepath);FileOutputStreamfo

8、s=newFileOutputStream(savepath);fos.write(code)

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。