在java中使用groovy怎么搞

在java中使用groovy怎么搞,第1张

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+agereturn 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=0i<100i++){

      败埋                  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))

                }

 

        }

}

都没有groovy目录,sourceSets应该不需要指定吧

,我最后参考了官网的groovy和java混合项目的目录路径,只要有groovy目录就可以了。不过还蠢顷梁是遇到点小问题,在build的时候,如果java类引用groovy类,会编译失败,乎颤似乎编带运译的顺序是先java,后groovy,编译的时候引用不到groovy的类


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/12143800.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-21
下一篇 2023-05-21

发表评论

登录后才能评论

评论列表(0条)

保存