1       在java中使用groovy类

1.1  直接调用groovy类

在java中调用Groovy类,需要增加Groovy运行时到java的classpath中。

pom.xml

<dependency>

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

<artifactId>groovy-all</artifactId>

<version>2.4.5</version>

</dependency>

创建一个包:de.vogella.groovy.java

创建一个Groovy类。

package de.vogella.groovy.java

import groovy.transform.ToString

@ToString()

class Person {

String firstName

String lastName

int age

def address

}

创建一个java类

package de.vogella.groovy.java;

public class Main {

public static void main(String[] args) {

Person p = new Person();

p.setFirstName("zuoys");

p.setLastName("遥远2");

System.out.println(p.getFirstName() + " " + p.getLastName());

System.out.println(p.toString());

}

}

输出:

zuoys 遥远2

de.vogella.groovy.java.Person(zuoys, 遥远2, 0, null)

1.2  Java调用Groovy脚本

http://www.tuicool.com/articles/baQRVf

JSR223方式

package de.vogella.groovy.java;

import java.util.Date;

import javax.script.Bindings;

import javax.script.Invocable;

import javax.script.ScriptEngine;

import javax.script.ScriptEngineManager;

public class ExecuteGroovyViaJSR223 {

public static void main(String[] args) {

ScriptEngineManager factory = new ScriptEngineManager();

// 每次生成一个engine实例

ScriptEngine engine = factory.getEngineByName("groovy");

System.out.println(engine.toString());

assert engine != null;

// javax.script.Bindings

Bindings binding = engine.createBindings();

binding.put("date", new Date());

// 如果script文本来自文件,请首先获取文件内容

try {

engine.eval("def getTime(){return date.getTime();}", binding);

engine.eval("def sayHello(name,age){return 'Hello,I am ' + name + ',age' + age;}");

Long time = (Long) ((Invocable) engine).invokeFunction("getTime", null);

System.out.println("执行结果:"+time);

String message = (String) ((Invocable) engine).invokeFunction("sayHello", "zhangsan", new Integer(12));

System.out.println("执行结果:"+message);

} catch (Exception e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

}

输出

org.codehaus.groovy.jsr223.GroovyScriptEngineImpl@38af3868

执行结果:1469518145323

执行结果:Hello,I am zhangsan,age12

23 在java中使用groovy类的更多相关文章

  1. java 中常用的类

    java 中常用的类 Math Math 类,包含用于执行基本数学运算的方法 常用API 取整 l  static double abs(double  a) 获取double 的绝对值 l  sta ...

  2. java中普通的顶级类是不能使用static关键字修饰的。只有内部类可以使用static修饰,也可以不使用staitc关键字修饰。

    java中普通的顶级类是不能使用static关键字修饰的.只有内部类可以使用static修饰,也可以不使用staitc关键字修饰. java中的类可以是static吗?答案是可以.在java中我们可以 ...

  3. java中的常用类(二)

    java中的常用类(二) Math类 Math类的声明:public final class Math extends Object Math类是与数学计算有关的类,里面的方法都是静态方法,直接使用类 ...

  4. Java中的BigDecimal类和int和Integer总结

    前言 我们都知道浮点型变量在进行计算的时候会出现丢失精度的问题.如下一段代码: System.out.println(0.05 + 0.01); System.out.println(1.0 - 0. ...

  5. 带有静态方法的类(java中的math类)

    带有静态方法的类通常(虽然不一定是这样)不打算被初始化. 可以用私有构造函数来限制非抽象类被初始化. 例如,java中的math类.它让构造函数标记为私有,所以你无法创建Math的实例.但Math类却 ...

  6. java中的File类

    File类 java中的File类其实和文件并没有多大关系,它更像一个对文件路径描述的类.它即可以代表某个路径下的特定文件,也可以用来表示该路径的下的所有文件,所以我们不要被它的表象所迷惑.对文件的真 ...

  7. Java基础(43):Java中的Object类与其方法(转)

    Object类 java.lang.Object java.lang包在使用的时候无需显示导入,编译时由编译器自动导入. Object类是类层次结构的根,Java中所有的类从根本上都继承自这个类. O ...

  8. java中基于TaskEngine类封装实现定时任务

    主要包括如下几个类: 文章标题:java中基于TaskEngine类封装实现定时任务 文章地址: http://blog.csdn.net/5iasp/article/details/10950529 ...

  9. Java中的Unsafe类111

    1.Unsafe类介绍 Unsafe类是在sun.misc包下,不属于Java标准.但是很多Java的基础类库,包括一些被广泛使用的高性能开发库都是基于Unsafe类开发的,比如Netty.Hadoo ...

随机推荐

  1. Java生成UUID不重复的id值

    在Java中创建UUID在网上查资料才知道在Java中,变成了UUID.创建方式也出奇简单System.out.println( java.util.UUID.randomUUID());

  2. ffmpeg遇到inttypes.h和UINT64_C

    http://blog.csdn.net/cll131421/article/details/7763657 编译过程:错误一:无法打开包括文件:“inttypes.h”: No such file ...

  3. legend2---开发日志13(layer_mobile的content传入dom 出现【object object】如何解决)

    legend2---开发日志13(layer_mobile的content传入dom 出现[object object]如何解决) 一.总结 一句话总结: layer_mobile.content只能 ...

  4. 提高scroll性能

    在DevTools中开始渲染,向下滑动一点点滚动条,然后停止滚动. 在结果中,注意frames总是在30ftps线上面,甚至都木有很接近69ftps线的(事实上帧执行的太缓慢以致于60ftps线在图上 ...

  5. Struts2 拦截器配置及使用

    在我的项目中有个需求,实现记录用户操作的系统日志,基于这个功能我首先想到的是Struts 的拦截器.配置一个全部Action都会拦截的拦截,写一个公用的服务.每当用户发送请求到Action 就记录相应 ...

  6. 最基本PSO算法的C++实现

    按照James Kennedy & Russell Eberhart (1995)的版本,算法过程如下: [x*] = PSO() P = Particle_Initialization(); ...

  7. Kvm学习文档记录

    一.实验环境: 在vmware上打开vt支持选项: 操作系统信息: [root@node2 ~]# cat /etc/issue CentOS release 6.6 (Final) Kernel \ ...

  8. 必须知道的八大种排序算法【java实现】

    一.冒泡排序 冒泡排序是一种简单的排序算法.它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来.走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成. ...

  9. json : json数据解析(一)

    在项目中经常用到json格式的数据转换与解析,先前写过一些小例子,现在整理下,以备后用和帮助后来者. 言归正传: 使用到的jar包 :json-lib-2.4-jdk15.jar,当然你也可以用自己版 ...

  10. linux中的条件变量

    1 大家可能知道互斥量是线程程序中必须的工具了,但是也不能是万能的,就比如某个线程正在等待共享数据某个条件的发生,这个时候会发生什么呢.它就可能重复的尝试对互斥对象锁定和解锁来检查共享数据结构. 2 ...