groovy 速学 - 24 - 与 Java 互调
发布时间:2020-12-14 16:47:52 所属栏目:大数据 来源:网络整理
导读:目录 与 Java 互调 Groovy 调用 Java Java 调用 Groovy 分类 Shell ClassLoader ScriptEngine 摘要 Groovy 调用 Java,Java 调用 Groovy(Shell,ClassLoader,ScriptEngine) 与 Java 互调 Groovy 调用 Java Groovy 中可以无缝直接调用任何 Java 代码 Java
目录
摘要
与 Java 互调Groovy 调用 JavaGroovy 中可以无缝直接调用任何 Java 代码 Java 调用 Groovy分类有三种方式
Shell功能简单,仅仅用于计算表达式和脚本的值 Binding binding = new Binding();
binding.setVariable("x",3);
binding.setVariable("y",2.1);
GroovyShell shell = new GroovyShell(binding);
Object value = shell.evaluate("x+y");
assertEquals(5.1,value);
ClassLoader通过生成 Groovy 对应的 GroovyObject 对象,来执行各种方法 Groovy 代码 class GroovyBean {
def name;
def calc(x,y) {
x + y
}
}
Java 代码 GroovyClassLoader loader = new GroovyClassLoader();
File file = new File("src/main/groovy/org/mrseasons/coffeetime/groovy/groovyjava/GroovyBean.groovy");
Class<?> groovyClass = loader.parseClass(file);
GroovyObject groovyObject = (GroovyObject) groovyClass.newInstance();
List<Integer> list = new ArrayList<>();
list.add(5);
list.add(3);
Object[] arguments = {list};
Object value = groovyObject.invokeMethod("calc",arguments);
assertEquals(8,value);
ScriptEngine运行脚本,脚本中的变量可以由 ScriptEngine 提供,以此实现动态脚本更新,运行时修改系统属性等功能。 Groovy 脚本 println "using engine"
def result = x + y
Java 代码 String[] roots = {"src/main/groovy/org/mrseasons/coffeetime/groovy/_23_groovy_java"};
GroovyScriptEngine engine = new GroovyScriptEngine(roots);
Binding binding = new Binding();
binding.setVariable("x",2.1);
Object output = engine.run("engine.groovy",binding);
assertEquals(5.1,output);
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |