在java中使用groovy怎么搞

 我来答
百度网友211658b42
推荐于2017-09-12 · TA获得超过3383个赞
知道小有建树答主
回答量:606
采纳率:100%
帮助的人:600万
展开全部

1、静态编译,在java工程中直接写groovy的文件,然后可以在groovy的文件中引用java工程的类,这种方式能够有效的利用groovy自身的语言特性,例如闭包;

2、通过groovyShell类直接执行脚本,例如:

package groovy_dsl.shell;
import groovy.lang.Binding;
import groovy.lang.GroovyShell;
public class GroovyShellEx {
        public static void main(String[] args) {
                Binding bind = new Binding();
                bind.setVariable("name", "iamzhongyong");
                bind.setVariable("age", "25");       
                GroovyShell shell = new GroovyShell(bind);               
                Object obj = shell.evaluate("str = name+age;return str");               
                System.out.println(obj);
        }
}

3、通过groovyScriptEngine执行文件或者脚本,例如:

package groovy_dsl.script;
import groovy.util.GroovyScriptEngine;
public class ScriptEngine {
        public static void main(String[] args) throws Exception {
                GroovyScriptEngine engine = new GroovyScriptEngine("");           
                Object obj = engine.run("src/main/java/groovy_dsl/script/script_test.groovy", "iamzhongyong");            
                System.out.println(obj);
        }
}

4、通过GroovyClassLoader来执行,例如:

package groovy_dsl.classloader;
import groovy.lang.GroovyClassLoader;
import groovy.lang.GroovyObject;
import java.io.File;
import java.io.IOException;
public class GroovyClassLoaderEx {
 
        public static void main(String[] args) throws Exception, IOException {
                GroovyClassLoader loader = new GroovyClassLoader();
 
                for(int i=0;i<100;i++){
                        Class<?> clazz = loader.parseClass(new File("src/main/java/groovy_dsl/classloader/UserDO.groovy"));
 
                        GroovyObject clazzObj = (GroovyObject)clazz.newInstance();
 
                        clazzObj.invokeMethod("setName", "iamzhongyong");
                        clazzObj.invokeMethod("setSex", "Boy");
                        clazzObj.invokeMethod("setAge", "26");
 
                        System.out.println(clazzObj.invokeMethod("getAllInfo", null));
                }
 
        }
}
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式