JAVAasist操作字节码

来源:互联网 发布:淘宝代发论文快吗 编辑:程序博客网 时间:2024/06/15 09:54
Java脚本引擎:
1 Java应用程序可以通过一套固定的接口与各种脚本引擎交互,从而达到在Java平台上调用各种脚本语言的目的
Java脚本API是联通Java平台和脚本语言的桥梁
可以把一些复杂的业务逻辑交给脚本语言处理,这样处理提高了开发效率
ScriptEngineManager manager=newScriptEngineManager();
ScriptEngine engine=manager.getEngineByName("javascript");
//执行javascript代码
engine.eval("var x=1;");
//存入变量
engine.put("y","hello");        
//提取变量
engine.get("y");


Java操作字节码可以实现如下功能:
1 动态生成新的类
2 动态改变某个类的结构(添加,删除,修改类的属性和方法)


优势:
1 比反射开销小,性能高
2 JAVAasist 性能高于反射,低于ASM


ClassPool classPool=ClassPool.getDefault();
CtClass ctClass=classPool.makeClass("TestReflect.ClassSource");


//创建属性
CtField ctField=CtField.make("private String sex='man';",ctClass);
ctClass.addField(ctField);


//创建方法
CtMethod ctMethod=CtMethod.make("public String getSex(){return this.sex}",ctClass);
ctClass.addMethod(ctMethod);
0 0
原创粉丝点击