大佬教程收集整理的这篇文章主要介绍了嵌入Groovy,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
Groovy就其本身而言,在不同的场景下都算是一门非常不错的编程语言,特别是在与Java混用的环境下,Groovy显得更加强大。出于这种考虑,Groovy被设计成非常轻量级,并且易于嵌入到任何Java应用系统中。
目前主要有3种方法将Groovy与Java集成起来,细节会在下文中讨论。
还有一种可选方案是,如果你确实需要使用其他脚本语言,可以利用Bean ScripTing Framework将任何脚本语言集成到你的Java代码中(虽然我们难以想象这么做的原因)。
你可以使用groovyshell执行Groovy中的任何表达式或者脚本。
groovyshell允许你通过Binding对象传进和传出变量。
// call groovy expressions from Java code Binding binding = new Binding(); binding.setVariable("foo",new Integer(2)); groovyshell sHell = new groovyshell(binding); Object value = sHell.evaluate("println 'Hello World!'; x = 123; return foo * 10"); assert value.equals(new Integer(20)); assert binding.getVariable("x").equals(new Integer(123));
将Groovy脚本继承自一个你选择的基类,之后便可以访问脚本的常规方法,这种做法往往非常有用。可以通过在编译配置中设置脚本基类属性,并将新的编译配置传递给sHell完成这一操作。
class ScriptBaseTest { @Test void extend_groovy_script() { def configuration = new CompilerConfiguration() configuration.setScriptBaseClass("ScriptBaseTestScript") def sHell = new groovyshell(this.class.classLoader,new Binding(),configuration) assertEquals sHell.evaluate("foo()"),"this is foo" } } abstract class ScriptBaseTestScript extends Script { def foo() { "this is foo" } }
你可以在Java代码中直接使用GroovyClassLoader动态地加载和执行Groovy类。Java代码如下:
ClassLoader parent = getClass().getClassLoader(); GroovyClassLoader loader = new GroovyClassLoader(parent); Class groovyClass = loader.parseClass(new File("src/test/groovy/script/HelloWorld.groovy")); // let's call some method on an instance GroovyObject groovyObject = (GroovyObject) groovyClass.newInstance(); Object[] args = {}; groovyObject.invokeMethod("run",args);
如果你想在Java里使用一个接口,但是接口的实现在Groovy脚本中,可以这样:
GroovyClassLoader gcl = new GroovyClassLoader(); Class clazz = gcl.parseClass(myStringwithGroovyClasssource,"Somename.groovy"); Object aScript = clazz.newInstance(); MyInterface myObject = (MyInterfacE) aScript; myObject.interfaceMethod(); ...
@H_944_36@由于原文代码比较多,所以感兴趣的同学请点击原文链接阅读。
@H_944_36@================================================
感谢 Coding 和 UPYUN 对本微信的支持。Coding.net 是一个面向开发者的云端开发平台,目前提供代码托管、运行空间、质量控制、项目管理等功能。
upyun.com是国内领先的云服务提供商,专注于提供静态文件的云存储、云处理和CDN加速服务。现在注册,即可免费体验!
以上是大佬教程为你收集整理的嵌入Groovy全部内容,希望文章能够帮你解决嵌入Groovy所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。