在java中使用groovy怎么搞
发布时间:2025-05-25 11:06:52 发布人:远客网络
一、在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!”.这一句就足够了,这只是开始…