代码改变世界

随笔分类 -  groovy

groovy-实现接口

2013-10-02 01:36 by Rollen Holt, 2656 阅读, 收藏, 编辑
摘要: Groovy提供了一些非常方便的方法来实现接口使用闭包实现接口只有一个方法的接口可以使用闭包来实现,例如1// a readable puts chars into a CharBuffer and returns the count of chars added2defreadable = { it.put("12 34".reverse());5}asReadable34// the Scanner constructor can take a Readable5defs =newScanner(readable)6asserts.nextInt() ==43当然也可以 阅读全文

groovy-正则表达式

2013-10-02 01:35 by Rollen Holt, 17120 阅读, 收藏, 编辑
摘要: Groovy使用~”pattern”来支持正则表达式,它将使用给定的模式字符串创建一个编译好的Java Pattern 对象。Groovy也支持=~(创建一个Matcher)和==~ (返回boolean,是否给定的字符串匹配这个pattern)操作符。对于groups的匹配,matcher[index] 是一个匹配到的group字符串的List或者string。1importjava.util.regex.Matcher2importjava.util.regex.Pattern3// ~ creates a Pattern from String4defpattern = ~/foo/5a 阅读全文

groovy-输入输出

2013-10-02 01:33 by Rollen Holt, 6110 阅读, 收藏, 编辑
摘要: Groovy为I/O提供了一系列的helper methods,所有的这些方法都适用于标准的Java Reader/Writer ,InputStream/OutputStream 和File 以及URL classes.闭包的使用可以确保资源被正确的关闭,比如遍历文件的每一行可以使用下面的代码:1newFile("foo.txt").eachLine{ line ->println(line) }如果在某些情况下,println()方法抛出了异常,那么eachLine()方法将确保资源被正确的关闭,同样的,如果在读取的时候发生了异常,那么资源也将会被正确的关闭。如果 阅读全文

groovy-真值

2013-10-02 01:32 by Rollen Holt, 567 阅读, 收藏, 编辑
摘要: Boolean expressionsGroovy支持标准的条件运算符的布尔表达式:1defa = true2defb = true3defc = false4asserta5asserta && b6asserta || c7assert!c此外,Groovy中有强制转换非布尔对象为布尔值的特殊规则。集合空集合会被强制转换为false:1defnumbers = [1,2,3]2assertnumbers//true, as numbers in not empty3numbers = []4assert!numbers//true, as numbers is now an 阅读全文

groovy-集合

2013-10-02 01:32 by Rollen Holt, 752 阅读, 收藏, 编辑
摘要: Lists你能使用下面的方法创建一个lists,注意[]是一个空list。1deflist = [5,6,7,8]2assertlist.get(2) ==73assertlist[2] ==74assertlistinstanceofjava.util.List56defemptyList = []7assertemptyList.size() ==08emptyList.add(5)9assertemptyList.size() ==1每个列表表达式都是创建了java.util.List的一个实例。RangesRanges容许你创建一个值序列,这个只序列可以被用作Lists,因为Range 阅读全文

groovy-保留字

2013-10-02 01:30 by Rollen Holt, 719 阅读, 收藏, 编辑
摘要: groovy的保留字:abstractasassertbooleanbreakbytecasecatchcharclassconstcontinuedefdefaultdodoubleelseenumextendsfalsefinalfinallyfloatforgotoifimplementsimportininstanceofintinterfacelongnativenewnullpackageprivateprotectedpublicreturnshortstaticstrictfpsuperswitchsynchronizedthisthreadsafethrowthrowstra 阅读全文

groovy-闭包

2013-10-02 01:29 by Rollen Holt, 4177 阅读, 收藏, 编辑
摘要: 什么是闭包一个groovy闭包就像一个代码块或者方法指针,他是定义然后执行的一段代码,但是他有一些特性:隐含变量,支持自由变量,支持currying 。我们先来看看一些例子:1defclos = {println"hello!"}23println"Executing the Closure:"4clos()//prints "hello!"在上面的例子中”hello!”是因为调用clos()函数才打印出来的,而不是在定义的时候打印出来的。参数闭包的参数在->之前列出,比如:1defprintSum = { a, b -> 阅读全文

groovy-脚本和类

2013-10-02 01:23 by Rollen Holt, 6707 阅读, 收藏, 编辑
摘要: 在groovy中定义类和java中是一样的。类的方法可以是static,也可以是非static的。groovy中的方法可以是public, protected, private,同时也支持java中的修饰符,比如synchronized。在groovy中导入包或者导入类,语法和java是一样的。只不过在groovy中默认已经导入了下面的package:1java.lang2java.io3java.math4java.net5java.util6groovy.lang7groovy.util在groovy和java中不同的一点就是,groovy默认是public的。每一个groovy类,在JV 阅读全文

groovy-语句

2013-10-02 01:22 by Rollen Holt, 6805 阅读, 收藏, 编辑
摘要: groovy语句类似于java语句,但是在groovy中的分号”;”是可选的。比如:1defx = [1,2,3]2printlnx3defy =5;defx = y +74printlnx5assertx ==12而且对于一些方法参数等复杂的事情,我们可以横跨多行:1defx = [1,2,3,24,5,6]3println(4x5)6if(x !=null&&7x.size() >5) {8println("Works!")9}10else{11assertfalse:"should never happen ${x}"12}g 阅读全文

groovy-运算符

2013-10-02 01:21 by Rollen Holt, 2458 阅读, 收藏, 编辑
摘要: 算术和条件运算符Groovy支”!”操作符,例如:1defexpression = false2assert!expression基于集合的运算符:Spread Operator (*.)运算法:spread操作符用来调用集合中的每一个对象的行为,就相当于调用collect方法一样:1parent*.action//equivalent to:2parent.collect{ child -> child?.action }这个行为可能是一个方法调用或者属性访问,并返回一个列表。下面是一个例子:1assert['cat','elephant']*.size 阅读全文

groovy-位运算

2013-10-02 01:20 by Rollen Holt, 805 阅读, 收藏, 编辑
摘要: 从Groovy 1.0 beta 10开始,Groovy支持位运算:>, >>>, |, &, ^, and ~.下表列出了位运算的操作符和其含义:Operator SymbolMeaning>Bitwise Right Shift Operator>>>Bitwise Unsigned Right Shift Operator|Bitwise Or Operator&Bitwise And Operator^Bitwise Xor Operator~Bitwise Negation Operator>=Bitwise Ri 阅读全文

groovy–流程控制

2013-10-02 01:19 by Rollen Holt, 2427 阅读, 收藏, 编辑
摘要: 在本篇文章中,我们将介绍逻辑分支,循环,以及如何从if-else以及try-catch代码块中返回值。if – elseGroovy 支持Java传统的if-else语法:def x = false def y = falseif ( !x ) { x = true}assert x == trueif ( x ) { x = false} else { y = true}assert x == y Groovy 也支持Java传统的if-else if -else 语法:1if( ... ) {2...3}elseif(...) {4...5}else{6...7}三元操作符Groovy . 阅读全文

groovy–运算符重载

2013-10-02 01:18 by Rollen Holt, 2251 阅读, 收藏, 编辑
摘要: Groovy支持运算符重载,各种运算符被映射到普通的java对象的方法调用,这就使得开发者可以利用运算符重载的优势来编写自己的Java或者groovy对象。下面的表格描述了groovy中的操作符所映射到的方法:OperatorMethoda + ba.plus(b)a – ba.minus(b)a * ba.multiply(b)a ** ba.power(b)a / ba.div(b)a % ba.mod(b)a | ba.or(b)a & ba.and(b)a ^ ba.xor(b)a++ or ++aa.next()a– or –aa.previous()a[b]a.getAt( 阅读全文