您当前的位置:首页 > 互联网教程

在java中使用groovy怎么搞

发布时间:2025-05-25 11:06:52    发布人:远客网络

在java中使用groovy怎么搞

一、在java中使用groovy怎么搞

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

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

importgroovy.lang.GroovyShell;

publicstaticvoidmain(String[]args){

bind.setVariable("name","iamzhongyong");

GroovyShellshell=newGroovyShell(bind);

Objectobj=shell.evaluate("str=name+age;returnstr");

}

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

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

importgroovy.util.GroovyScriptEngine;

publicstaticvoidmain(String[]args)throwsException{

GroovyScriptEngineengine=newGroovyScriptEngine("");

Objectobj=engine.run("src/main/java/groovy_dsl/script/script_test.groovy","iamzhongyong");

}

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

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

packagegroovy_dsl.classloader;

importgroovy.lang.GroovyClassLoader;

importgroovy.lang.GroovyObject;

publicclassGroovyClassLoaderEx{

publicstaticvoidmain(String[]args)throwsException,IOException{

GroovyClassLoaderloader=newGroovyClassLoader();

Class<?>clazz=loader.parseClass(newFile("src/main/java/groovy_dsl/classloader/UserDO.groovy"));

GroovyObjectclazzObj=(GroovyObject)clazz.newInstance();

clazzObj.invokeMethod("setName","iamzhongyong");

clazzObj.invokeMethod("setSex","Boy");

clazzObj.invokeMethod("setAge","26");

System.out.println(clazzObj.invokeMethod("getAllInfo",null));

二、groovy中使java必须import吗

第一种是调用groovy官方库里的类

第二种是调用自己写的groovy文本的类

缺点:如果不安装groovy解释器和groovy Eclipse插件.就无法享受更多的对jdk类的扩展,已经脚本化语法的便捷.

第三步:推广成员安装groovy解释器和groovy Eclipse插件

<groupId>org.codehaus.groovy</groupId>

<artifactId>groovy-all</artifactId>

<version>2.2.2</version>

或者去官网下载grovvy的jar包,导入的eclipse的class依赖中.

就可以直接在java里调用 grovvy库里的类了.

(如果Eclipse不会自动 import groovy的类,需要在.project中新增<nature>org.eclipse.jdt.groovy.core.groovyNature</nature>)

import groovy.util.GroovyCollections;

public static void main(String[] args){

List<Double> lists= new ArrayList<Double>();

Object sum= GroovyCollections.sum(lists);

2第二种.如果是自己写的groovy文件.

假如如下 GrovvySystemConfigRead.groovy代码

*TochangethistemplateuseFile|Settings|FileTemplates.

*读取邮件验证访问路径,ConfigurationHolder是groovy框架grais里的某个类

2.1第一种调用,JAVA类(JavaClassCallGroovy)是可以直接调用GROOVY类(上面写好的SystemConfigRead)的。

(需要安装eclipse插件,自动把groovy文本文件编译为.class,插件安装见

public class JavaClassCallGroovy{

public static void main(String[] args){

2.2第二种,以反射脚本化方式调用(不推荐),实现脚本化调用,即脚本改动后,无需编译,自动执行的目的.

这种反射化调用不仅可以用在java类调用groovy类,也可以用在java类调用java类,实现java的脚本化.

*@throwsIllegalAccessException

*@throwsInstantiationException

publicvoidgroovyToJava()throwsIOException,IllegalAccessException,InstantiationException{

ClassLoaderparent=getClass().getClassLoader();

GroovyClassLoaderloader=newGroovyClassLoader(parent);

ClassgroovyClass=loader.parseClass(newFile("site/grails-app/utils/com/ingping/core/SystemConfigRead.groovy"));

//将对象实例化并且强制转换为GroovyObject对象

GroovyObjectgroovyObject=(GroovyObject)groovyClass.newInstance();

//readEmailCodeUrl方法名,null参数值,没有为null

System.out.println(""+groovyObject.invokeMethod("readEmailCodeUrl",null));

三、java程序员为什么使用Groovy

是的,你可以用java语法来编写groovy,最后还可以生成class文件,直接用java调用。你会说,这有什么好的,不就是改了个后缀名么?呕,也许吧…但是它的亮点当然不是这个,它的亮点是你可以在Groovy里面直接用java语法混搭写,当然不是很推荐这样做的。

不需要java的反射,不需要冗长的代码,不需要各种try catch异常,你就可以实现各种神奇的事情。Groovy的class可以这样新增一个方法,或者调用它。

java是一把基础工具,等你需要的时候,你需要到处去找jar包,来填充自己的程序,而且你需要看API去弄懂各种使用。此外,java的编写实在是太冗长了,为了打印一个HelloWorld,你需要编写class,写一个main函数。对于Groovy来说:print“hello world!”.这一句就足够了,这只是开始…