Groovy_快速入门

合集下载

groovy 字典定义(一)

groovy 字典定义(一)

groovy 字典定义(一)Groovy 字典定义Groovy 字典是一种在 Groovy 编程语言中常用的数据结构,它允许以键值对的形式存储和访问数据。

Groovy 字典与其他编程语言中的字典、哈希表或关联数组类似。

定义•Groovy 字典是一种动态数据结构,它可以根据需要动态添加、删除和更新键值对。

•字典中的键必须是唯一的,每个键对应一个值。

•可以使用中括号来访问字典中的值,例如myDict['key']。

•字典可以包含任意类型的值,包括字符串、整数、浮点数、列表、字典等。

例子以下是一个示例代码,展示了如何创建和使用 Groovy 字典:def myDict = ['name': 'John', 'age': 30, 'hobbies':['reading', 'painting']]println myDict['name'] // 输出:Johnprintln // 输出:30println // 输出:[reading, painting]myDict['name'] = 'Jane' // 更新键为 name 的值println myDict['name'] // 输出:Jane('age') // 移除键为 age 的键值对println myDict // 输出:[name:Jane, hobbies:[r eading, painting]]() // 清空字典println myDict // 输出:[:]书籍推荐《Groovy in Action》[book](•作者:Dierk König, Paul King, Gu illaume Laforge, Hamlet D’Arcy, Cédric Champeau, Erik Pragt, Jon Skeet•出版时间:2015年•简介:本书是 Groovy 领域的经典参考书籍之一。

GROOVY_快速入门

GROOVY_快速入门

Groovy快速入门1、集合(1)List(java.util.List)4、collect遍历集合,逐个传递给闭包,处理后的结果返回给对应的项//Bindingbinding.setVariable("foo", GroovyShellObjectassertassertClassLoader GroovyClassLoader Class//GroovyObjectObject[]groovyObject.invokeMethod("run",args);如果你想使用一个用Groovy脚本实现的接口,你可以这么使用它:GroovyClassLoader gcl=new GroovyClassLoader();Class clazz=gcl.parseClass(myStringwithGroovyClassSource"SomeName.groovy");Object aScript=clazz.newInstance();MyInterface myObject=(MyInterface)aScript;myObject.interfaceMethod();如果某个Groovy类实现口MyInterface接口,那么上面的代码就会很好的工作.myObject的使用方法与其他实现了MyInterface接口的Java对象一样.3.Groovy脚本引擎对于那些想将Groovy脚本嵌入到服务器并且在每次修改后重新装入的人来说,Groovy脚本引擎提供了一个彻底的解决方案.你可以设定系列CLASSPATH作为根来初始化Groovy脚本引擎,这些GLASSPATH可以是URL也可以是目录名.接着你就可以这些根路径下的任何Groovy脚本了.GSE 会跟踪脚本间的依赖关系,因此如果任何有依赖关系的脚本被修改,整颗树将会重新编译和载入.另外,每次执行脚本时,你都可以传入一个包含脚本可接受属性的Binding.脚本执行完以后,传入脚本中的那些属性在Binding中依然有效.下面是一个例子:/my/groovy/script/path/hello.groovy:output="Hello,${input}!"import ng.Binding;import groovy.util.GroovyScriptEngine;String[]roots=new String[]{"/my/groovy/script/path"}; GroovyScriptEngine gse=new GroovyScriptEngine(roots);Binding binding=new Binding();binding.setVariable("input","world");gse.run("test.groovy",binding);System.out.println(binding.getVariable("output"));将打印"Hello,world!".4.运行时依赖和JDK1.4一样,Groovy Jar也依赖与ASM库上的运行时,ASM库包括4个Jar(asm-2.1.jar,asm-util-2.1.jar,asm-attrs-2.1.jar and asm-analysis-2.1).也就是说,只要将上面的5个Jar添加到路径中,你就能将轻松地Groovy嵌入到你的应用里.另一种方案可以不用那么多的Jar.你可以用GROOVY_HOME/embeddable目录下的groovy-all-1.0-beta-x.jar.这个Jar包将Groovy和ASM组合打包成一个方便的Jar包.注意:groovy-all-1.0-beta-x.jar中的ASM类使用了不同的命名空间,因此要避免与使用ASM的库发生冲突.Groovy全攻略--运行篇Groovy脚本是一个包含许多语句和类声明的文本文件.Groovy的用法和其他脚本语言类似.下面是几种运行Groovy脚本的方法:1.使用交互控制台Groovy有一个Swing交互控制台,允许你像使用SQL工具一样输入和执行Groovy语句.控制台支持历史记录,因此你可以向前或向后遍历命令.如果你已经安装了Groovy二进制分发包,你可以使用下面的命令启动Groovy Swing控制台.如果像启动命令行控制台,可以输入下面的命令:GroovyConsole如果想启动命令行控制台,可以输入下面的命令Groovysh从源代码分发包中启动Swing Groovy控制台maven console2.通过IDE运行Groovy脚本有一个叫做GroovyShell的类含有main(String[])方法可以运行任何Groovy脚本.你可以用下面的语句执行任何Groovy脚本:java ng.GroovyShell foo/MyScript.groovy[arguments你可以在你的IDE中使用上面的Groovy main()执行或调试任何Groovy脚本.3.用命令行执行Groovy脚本在GROOVY_HOME\bin里有个叫'groovy'或'groovy.bat'的脚本文件(或者二者都有,根据你的平台不同而不同).这些脚本文件是Groovy运行时的一部分.一旦安装了Groovy运行时,你就可以这样运行Groovy脚本:groovy foo/MyScript.groovy[arguments]如果你使用从CVS构建的Groovy,那么除了Groovy脚本以外,命令行上可能还运行着其他的类.1.拥有main()方法的类;2.和JUnit的测试一起运行的继承自GroovyTestCase的类,3.实现Runnable接口的类.run()方法被调用.获得最新最强的Groovy,输入下面的命令做一个CVS检出maven groovy:make-install在groovy/target/install里会有一份完整的二进制分发包.你可以将groovy/target/install/bin添加到你的路径,这样你就可以轻松地用命令行执行你的Groovy脚本了.4.用Groovy创建Unix脚本你可以用Groovy编写Unix脚本并且像Unix脚本一样直接从命令行运行它.倘若你安装的是二进制分发包并且设置好了路径,那么下面的代码将会很好的工作:将其保存为helloWorld.groovy.#!/usr/bin/env groovyprintln("Hello world")for(a in this.args){println("Argument:"+a)}接着从命令行运行这个脚本,chmod+x helloWorld./helloWorld。

groovy方法

groovy方法

Groovy方法1. 什么是Groovy方法?Groovy是一种基于Java语法的动态脚本语言,它结合了Python、Ruby和Smalltalk的特性,能够在Java虚拟机上运行。

Groovy方法是在Groovy语言中定义的一种可重用的代码块,用于实现特定的功能。

在Groovy中,方法是一段被命名的代码块,可以接受零个或多个参数,并且可以返回一个值。

定义方法的语法为:returnType methodName(ParameterType parameter1, ParameterType parameter2, ...) {// 方法体// 可以包含变量、流程控制语句、循环语句等return value // 如果有返回值,则使用return语句返回}Groovy方法具有以下特点: - 可以通过方法名和参数来调用方法 - 支持方法重载,即可以定义具有相同名称但参数类型或数量不同的多个方法 - 支持在方法内使用闭包和脚本块 - 可以将方法视为对象,并在其他方法中作为参数进行传递 - 可以使用注解为方法添加额外的元数据信息2. Groovy方法的定义和调用2.1 定义Groovy方法在Groovy中,可以使用关键字def来定义一个方法,该关键字表示方法的返回类型是动态的,可以根据运行时的情况进行推断。

以下是一个简单的Groovy方法的定义示例:def greet(name) {println "Hello, $name!"}上述示例定义了一个名为greet的方法,接受一个参数name,然后在控制台输出问候信息。

方法体由{}包围,方法体内部可以包含任意合法的Groovy代码。

2.2 调用Groovy方法要调用Groovy方法,可以通过方法名后加上参数列表的方式,例如:greet("Alice")上述代码会调用greet方法,并将参数"Alice"传递给方法。

Groovy轻松入门——Grails实战之GORM

Groovy轻松入门——Grails实战之GORM

Groovy轻松入门——Grails实战之GORMGORM就是以前我刚学Groovy没多久时想实现的功能它使开发人员不需要关心数据库方面也不需要任何配置只需专心用OO思想设计自己的系统还有一个好处就是开发时不用备份数据库因为GORM 会自动帮你建表以及约束(但数据库需要你自己建) 让我们来看一下用Grails开发是多么简单高效吧!在Grails +中配置稍有不同详见朝花夕拾——Groovy & Grails 在写域类时无须添加与业务无关的属性比如在用Hibernate时我们需要(不强制)在类中定义id 但用GORM时 id无须自己声明 GORM 会帮我们自动添加id和version GORM通过反射机制获得域类属性信息决定数据库字段类型所以在定义域类时不要使用def关键字来定义属性务必明确定义属性类型比如在下面的域类Article中用String来定义content(而不是def content) 在默认情况下 String映射到数据库中的字段类型是VARCHAR(Date映射到数据库中的字段类型是DATETIME) 如果通过类变量contraints定义了String的长度范围且长度过长映射到数据库中的字段类型会变为TEXT 十分智能class Article { Date dateAdded // Date 映射到数据库中的字段类型是DATETIME String content static constraints = { content(blank: false size: ) // 如果没有定义content的大小范围它在数据库中类型为VARCHAR最大长度是// 显然不满足我们的需求这样定义后数据库中的字段类型会变为TEXT } } 如果将数据源/grails app/conf/XXXDataSource中的String dbCreate = update Grails会自动帮我们同步内存和数据库中域类对象的状态这点是很方便的不需要在每次修改对象后 update了(GORM 中的save()相当于Hibernate中的saveOrUpdate()) 其好处犹如Java 中 new出一个对象当不再使用此对象时不需要自行delete一样在实际开发中您就会体会到了下面让我们看一下GORM中的 : :N N: N:N以及继承关系映射一对一关系class Dog { String name Tail tail // 狗有一条尾巴} class Tail { float size Dog owner // 尾巴也知道自己属于那只狗}现在Dog和Tail的一对一关系是双向的当然你也可以去掉T ail类中的owner属性或Dog类中的tail属性使一对一关系变为单向的级联删除当Dog对象被删除时则Dog对象所引用的Tail对象也将被相应删除;同样地当Tail对象被删除时Tail对象所引用的Dog对象也将被相应删除如果你认为Tail被切除后Dog应该还活着即Tail 对象删除后 Tail对象所应用的Dog对象不应该被删除那么我们可以通过在Tail类中声明类变量belongsT o来实现在这个场景中我们将Tail 改为class Tail { float size Dog owner // 尾巴也知道自己属于那只狗static belongsT o = Dog // 注意是static的} 级联更新/保存当Dog对象更新/保存 Dog对象所引用的Trail对象也更新/保存;反之亦然一对多多对一关系class Dog { String name static hasMany = [feet: Foot] // 通过声明类变量hasMany 来定义Dog 一这方有多Foot } class Foot { float size Dog owner static belongsTo = Dog // 在一对多多对一关系中默认多方belongsTo 一方} 关于保存更新和删除与一对一关系相同都是级联更新/保存和级联删除当Dog被删除时由于Foot belongsT o(属于) Dog 所以Dog 对象所引用的所有Foot对象全被删除;而当Foot对象被删除时Dog 对象不会被删除这是通过类变量belongsTo实现的多对多关系class Teacher { String name static hasMany = [students: Student] } class Student { String name static hasMany = [teachers: Teacher] static belongsTo = Teacher // 在多对多关系中至少有一方声明类变量belongsTo } 更新/保存在多对多关系中相对一对一一对多多对一关系中要特殊点就是只有拥有方可以级联更新/保存比如在本例中由于Student belongsTo Teacher 所以Teacher是拥有方Teacher的更新/保存将引起Teacher对象所引用的所有Student对象的更新/保存删除也有点特殊拥有方被删除后它所引用的对象不会被删除你必须自己删除它们否则它们将成为孤儿继承关系class Base { } class Derived extends Base { }只要定义类无需任何配置够简单吧lishixinzhi/Article/program/Java/hx/201311/26540。

groovy方法

groovy方法

groovy方法Groovy方法Groovy是一种基于Java平台的动态语言,它具有许多Java所不具备的特性,例如闭包、元编程和DSL等。

在Groovy中,方法是一种非常重要的概念,因为所有的代码都必须放在方法中才能被执行。

本文将详细介绍Groovy中的方法相关知识。

一、定义方法在Groovy中,定义一个方法非常简单。

只需要使用关键字def加上方法名和参数列表即可。

例如:```def hello(name) {println "Hello, $name!"}```这个例子定义了一个名为hello的方法,它接受一个参数name,并在控制台输出“Hello, name!”。

需要注意的是,在Groovy中并不需要指定返回值类型,因为它会自动推断出返回值类型。

二、调用方法调用一个方法也很简单。

只需要使用方法名和参数列表即可。

例如:```hello("Tom")```这个例子调用了之前定义的hello方法,并传入了一个名为Tom的参数。

三、默认参数值在Groovy中,可以为方法设置默认参数值。

例如:```def greet(name="world") {println "Hello, $name!"}```这个例子定义了一个名为greet的方法,并设置了默认参数值为“world”。

如果调用时不传入任何参数,则会使用默认值。

四、可变参数在Groovy中,可以使用星号(*)定义可变参数。

例如:```def sum(numbers...) {def result = 0numbers.each { result += it }return result}```这个例子定义了一个名为sum的方法,并使用星号定义了一个可变参数numbers。

在方法内部,可以像操作数组一样遍历这个可变参数并进行求和。

五、命名参数在Groovy中,可以使用命名参数来传递参数。

groovy定义方法

groovy定义方法

groovy定义方法嘿呀,宝子!今天咱们来唠唠Groovy里定义方法这事儿。

在Groovy里定义方法可有意思啦。

就像你在和程序这个小伙伴讲一个新的规则一样。

比如说,你想定义一个简单的加法方法。

你可以这么写:def add(num1, num2) {return num1 + num2.}看呀,这个“def”就像是一个魔法咒语,告诉Groovy“我要开始定义个东西啦”。

然后括号里的“num1”和“num2”呢,就像是两个小盒子,用来装你要加的数字。

最后那个“return”就是把结果拿出来给大家看。

而且哦,Groovy很贴心的呢。

如果你的方法就只有一行代码,像这个加法方法,你还可以把大括号省略掉,写成这样:def add(num1, num2) = num1 + num2.是不是超级简洁呀?就像你和程序说“别整那些复杂的,简单点就好”。

要是你想定义一个方法来判断一个数是不是偶数呢?可以这样写:def isEven(num) {return num % 2 == 0.}这里的“%”就是求余数啦。

如果这个数除以2的余数是0,那就是偶数,这个方法就会返回“true”,不然就返回“false”。

还有哦,方法的名字你可以随便取,只要符合命名规则就好。

你可以取个超级有趣的名字,像“superAdd”或者“funnyIsEven”之类的。

不过呢,取个好理解的名字是很重要的啦,这样别人看你的代码就不会一头雾水。

Groovy定义方法就是这么轻松又有趣。

你可以按照自己的想法,让程序去做各种各样好玩的事情。

就像是你在指挥一群小机器人,让它们按照你的规则来玩数字游戏或者做逻辑判断。

宝子,你要是开始玩Groovy,肯定会爱上这种定义方法的感觉的啦!。

groovy数组基本语法

groovy数组基本语法

groovy数组基本语法Groovy是一种基于Java的动态语言,它继承了Java的语法和库,并且提供了更加便捷的编程体验。

在Groovy中,数组是一种非常重要的数据结构,它可以存储多个相同类型的元素,并且支持各种常见的操作。

本文将介绍Groovy数组的基本语法。

一、定义数组1.使用[]运算符在Groovy中,可以使用[]运算符来定义一个数组。

例如:def arr = [1, 2, 3]这样就定义了一个包含三个元素(分别为1、2、3)的整型数组arr。

2.使用Array类Groovy也提供了Array类来创建数组对象。

例如:def arr = new Array(3)这样就创建了一个包含三个元素(默认值为null)的Object类型数组arr。

3.指定元素类型如果需要指定数组元素类型,可以使用[]运算符或者Array类的构造函数。

例如:def intArr = [1, 2, 3] as int[]def strArr = new String[3]这样就分别创建了一个整型数组intArr和一个字符串类型数组strArr。

二、访问元素在Groovy中,可以使用下标来访问数组中的元素。

下标从0开始计数。

例如:def arr = [1, 2, 3]assert arr[0] == 1assert arr[1] == 2assert arr[2] == 3三、修改元素可以使用下标来修改数组中的元素。

例如:def arr = [1, 2, 3]arr[1] = 4assert arr == [1, 4, 3]四、遍历数组在Groovy中,可以使用for循环或者each方法来遍历数组。

例如:def arr = [1, 2, 3]for (int i = 0; i < arr.size(); i++) {println(arr[i])}arr.each { element ->println(element)}五、数组操作Groovy提供了丰富的数组操作方法,包括排序、查找、过滤等。

Groovy

Groovy

Groovy特性
语法上支持动态类型,闭包等新一代语言特性 无缝集成所有已经存在的Java类库 即支持面向对象编程也支持面向过程编码
Groovy优势
一种更加敏捷的编程语言 入门非常的容易,单功能非常的强大 即可以作为编程语言也可以作为脚本语言 熟练掌握Java的同学会非常容易掌握Groovy
Groovy语法讲解
DSL介绍
全称domain specific language 有哪些常见的DSL语言及特点 DSL与通用编程语言的区别 核心思想:求专不求全,解决特定问题
Groovy介绍
是一种基于JVM的敏捷开发语言 结合了Python、Ruby和Smalltalk的许多强大的特性 Groovy可以与Java完美结合,而且可以使用java所有的库
Groovy中列表 Groovy中的映射 Groovy中的范围
第四部分 面向对象
Groovy中类、接口、方法等的定义和使用 Groovy中的元编程
Groovy高级语法
Groovy json操作详解 Groovy xml文件操作详解 Groovy 文件操作详解 Groovy与java对比及总结
groovy基础语法 groovy闭包讲解 groovy数据结构 groovy面向对象
第一部分oovy中的逻辑控制讲解
第二部分 闭包
groovy中闭包基础讲解 groovy中闭包使用讲解 groovy中闭包进阶讲解
第三部分 数据结构
Groovy学习总结
Groovy变量,字符串,循环等基本语法 Groovy中的数据结构:列表、映射、范围用法 Groovy中方法、类等面向对象相关知识 Groovy中对普通文件、xml、json处理
文件操作
Groovy中如何解析一个xml格式数据 Groovy中如何创建一个xml格式数据 所有java对文件的处理类,groovy都可以使用 Groovy扩展了许多更加快捷和强大的方法
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Groovy 快速入门1、集合 、 (1)List (java.util.List) ) list = [1, 2, 'hello', new java.util.Date()] assert list.size() == 4 assert list.get(2) == 'hello' 注意:一切都是对象(数字会自动转换) (2)Map (java.util.Map) ) map = ['name':'James', 'location':'London'] assert map.size() == 2 assert map.get('name') == 'James' (3)遍历集合 ) list = [1, 2, 3] for (i in list) { println i } 2、闭包(Closures) 、闭包( )  闭包类似 Java 的内类,区别是闭包只有单一的方法可以调用,但可以有任意的参数 closure = { param | println("hello ${param}") } closure.call("world!") closure = { greeting, name | println(greeting + name) } closure.call("hello ", "world!") 闭包用“{}”括起,“|”前面是参数,后面是处理语句,使用 call 调用 这里我们使用了一个 Groovy-Beta3 闭包定义, 只是为了让您能看懂老版本 Groovy 的一些例子。

在 新的 Groovy JSR 中对闭包的定义略有改动, 因为 | 字符同时也是 Java 中的位操作符; Groovy JSR 建议使用 Nice (另外一种 JRE 语言)样式的 -> 分隔符代替它。

 第一个例子演示了在字符串内使用参数的形式:${param}  第二个例子演示了多参数形式:用“,”分隔参数  如果只有一个参数,可以不写,而使用缺省的参数“it”,如下面的例子: closure = { println "hello " + it } closure.call("world!") 3、each 、 遍历集合,逐个传递给闭包[1, 2, 3].each { item | print "${item}-" }  上面例子的输出结果是:1-2-3-4、collect 、 遍历集合,逐个传递给闭包,处理后的结果返回给对应的项value = [1, 2, 3].collect { it * 2 } assert value == [2, 4, 6] 5、find 、 根据闭包断言,返回集合中找到的第一个项目value = [1, 2, 3].find { it > 1 } assert value == 2 6、findAll 、 根据闭包断言,返回集合中所有找到的项目value = [1, 2, 3].findAll { it > 1 } assert value == [2, 3] 7、inject 、  遍历集合,第一次将传递的值和集合项目传给闭包,将处理结果作为传递的值,和下一个 集合项目传给闭包,依此类推 value = [1, 2, 3].inject('counting: ') { str, item | str + item } assert value == "counting: 123" value = [1, 2, 3].inject(0) { count, item | count + item } assert value == 6 8、every 、 如果集合中所有项目都匹配闭包断言,就返回 true,否则返回 falsevalue = [1, 2, 3].every { it < 5 } assert valuevalue = [1, 2, 3].every { item | item < 3 } assert ! value 9、any 、 如果集合中任何项目匹配闭包断言,就返回 true,否则返回 falsevalue = [1, 2, 3].any { it > 2 } assert value value = [1, 2, 3].any { item | item > 3 }assert value == false 10、min/max 、  返回集合中的最小/最大项目(对象必须可比较) value = [9, 4, 2, 10, 5].max() assert value == 10 value = [9, 4, 2, 10, 5].min() assert value == 2 value = ['x', 'y', 'a', 'z'].min() assert value == 'a' 11、join 、 连接集合中的值成一个字符串value = [1, 2, 3].join('-') assert value == '1-2-3' 12、 yield 、  在 Python 和 Ruby 中通过 yield 语句创建“yield”风格的 iterators,在 Groovy 同样有效,只是 使用的是闭包 class Foo{ static void main(args) { foo = new Foo() for (x in foo.myGenerator) { print("${x}-") } } myGenerator(Closure yield) { yield.call("A") yield.call("B") yield.call("C") } }   例子的输出结果是:A-B-CCloures 原型可以省略,call 和括号同样可选,这样更象 Python/Rubyclass Foo { myGenerator(yield) { yield "A" yield "B" yield "C" } static void main(args) {foo = new Foo() foo.myGenerator { println "Called with ${it}" } } }Groovy 全攻略 嵌入篇 全攻略--嵌入篇 Groovy 被设计得非常轻量级,很容易迁入到任何 Java 应用系统。

你可以使用 BSF 将 Groovy 脚本嵌入任何 Java 代码中.但是 Groovy 提供了一个轻量级的紧密集成. 下面是 3 种主要方法:1.使用 Shell 调试脚本或表达式 在 Groovy 中你可以使用 GroovyShell 对 Groovy 脚本和表达式进行调试.GroovyShell 允许你通过 Binding 对象传入或传出变量. // 从 Java 代码中调用 Groovy 语句 Binding binding = new Binding(); binding.setVariable("foo", new Integer(2)); GroovyShell shell = new GroovyShell(binding);Object value = shell.evaluate("println 'Hello World!'; x = 123; return foo * 10"); assert value.equals(new Integer(20)); assert binding.getVariable("x").equals(new Integer(123));2.在 Java 中动态调用运行 Groovy 代码 你可以使用 GroovyClassLoader 将 Groovy 的类动态地载入到 Java 程序中并直接使用或运行它. 下面是一个例子: ClassLoader parent = getClass().getClassLoader(); GroovyClassLoader loader = new GroovyClassLoader(parent); Class groovyClass = loader.parseClass(new File("src/test/groovy/script/HelloWorld.groovy"));// 调用实例中的某个方法 GroovyObject groovyObject = (GroovyObject) groovyClass.newInstance(); Object[] args = {};groovyObject.invokeMethod("run", args);如果你想使用一个用 Groovy 脚本实现的接口,你可以这么使用它: GroovyClassLoader gcl = new GroovyClassLoader(); Class clazz = gcl.parseClass(myStringwithGroovyClassSource "SomeName.groovy"); Object aScript = clazz.newInstance(); MyInterface myObject = (MyInterface) aScript; myObject.interfaceMethod();如果某个 Groovy 类实现口 MyInterface 接口,那么上面的代码就会很好的工作.myObject 的使用方法 与其他实现了 MyInterface 接口的 Java 对象一样.3.Groovy 脚本引擎 对于那些想将 Groovy 脚本嵌入到服务器并且在每次修改后重新装入的人来说,Groovy 脚本引擎提供 了一个彻底的解决方案.你可以设定系列 CLASSPATH 作为根来初始化 Groovy 脚本引擎,这些 GLASSPATH 可以是 URL 也可以是目录名.接着你就可以这些根路径下的任何 Groovy 脚本了.GSE 会跟踪脚本间的依赖关系,因此如果任何有依赖关系的脚本被修改,整颗树将会重新编译和载入. 另外,每次执行脚本时,你都可以传入一个包含脚本可接受属性的 Binding.脚本执行完以后,传入脚本 中的那些属性在 Binding 中依然有效.下面是一个例子: /my/groovy/script/path/hello.groovy: output = "Hello, ${input}!"import ng.Binding; import groovy.util.GroovyScriptEngine;String[] roots =new String[] { " /my/groovy/script/path " } ; new GroovyScriptEngine(roots);GroovyScriptEngine gse = Binding binding =new Binding();binding.setVariable( " input " , " world " );gse.run( " test.groovy " , binding); System.out.println(binding.getVariable( " output " )); 将打印 "Hello, world!".4.运行时依赖 和 JDK1.4 一样,Groovy Jar 也依赖与 ASM 库上的运行时,ASM 库包括 4 个 Jar(asm-2.1.jar, asm-util-2.1.jar, asm-attrs-2.1.jar and asm-analysis-2.1). 也就是说,只要将上面的 5 个 Jar 添加到路径中, 你就能将轻松地 Groovy 嵌入到你的应用里.另一种方案可以不用那么多的 Jar.你可以用 GROOVY_HOME/embeddable 目录下的 groovy-all-1.0-beta-x.jar.这个 Jar 包将 Groovy 和 ASM 组合打包成一个方便的 Jar 包.注 意:groovy-all-1.0-beta-x.jar 中的 ASM 类使用了不同的命名空间,因此要避免与使用 ASM 的库发生冲 突.Groovy 全攻略 运行篇 全攻略--运行篇 Groovy 脚本是一个包含许多语句和类声明的文本文件.Groovy 的用法和其他脚本语言类似.下面是 几种运行 Groovy 脚本的方法: 1.使用交互控制台 Groovy 有一个 Swing 交互控制台,允许你像使用 SQL 工具一样输入和执行 Groovy 语句.控制台支持 历史记录,因此你可以向前或向后遍历命令. 如果你已经安装了 Groovy 二进制分发包,你可以使用下面的命令启动 Groovy Swing 控制台. 如果像启动命令行控制台,可以输入下面的命令: GroovyConsole如果想启动命令行控制台,可以输入下面的命令 Groovysh从源代码分发包中启动 Swing Groovy 控制台 maven console2.通过 IDE 运行 Groovy 脚本 有一个叫做 GroovyShell 的类含有 main(String[])方法可以运行任何 Groovy 脚本.你可以用下面的语 句执行任何 Groovy 脚本: java ng.GroovyShell foo/MyScript.groovy [arguments 你可以在你的 IDE 中使用上面的 Groovy main()执行或调试任何 Groovy 脚本.3.用命令行执行 Groovy 脚本 在 GROOVY_HOME\bin 里有个叫'groovy' 或'groovy.bat' 的脚本文件(或者二者都有,根据你的平台 不同而不同).这些脚本文件是 Groovy 运行时的一部分. 一旦安装了 Groovy 运行时,你就可以这样运行 Groovy 脚本: groovy foo/MyScript.groovy [arguments] 如果你使用从 CVS 构建的 Groovy,那么除了 Groovy 脚本以外,命令行上可能还运行着其他的类. 1.拥有 main()方法的类; 2.和 JUnit 的测试一起运行的继承自 GroovyTestCase 的类, 3.实现 Runnable 接口的类.run()方法被调用. 获得最新最强的 Groovy,输入下面的命令做一个 CVS 检出 maven groovy:make-install 在 groovy/target/install 里会有一份完整的二进制分发包.你可以将 groovy/target/install/bin 添加到你的 路径,这样你就可以轻松地用命令行执行你的 Groovy 脚本了.4.用 Groovy 创建 Unix 脚本 你可以用 Groovy 编写 Unix 脚本并且像 Unix 脚本一样直接从命令行运行它.倘若你安装的是二进制 分发包并且设置好了路径,那么下面的代码将会很好的工作: 将其保存为 helloWorld.groovy. #!/usr/bin/env groovy println("Hello world") for (a in this.args) { println("Argument: " + a) } 接着从命令行运行这个脚本,chmod +x helloWorld ./helloWorld。

相关文档
最新文档