WEB开发网
开发学院软件开发Java 实战 Groovy: 使用闭包、ExpandoMetaClass 和类别... 阅读

实战 Groovy: 使用闭包、ExpandoMetaClass 和类别进行元编程

 2009-11-19 00:00:00 来源:WEB开发网   
核心提示: 清单 2. 动态添加 layEgg() 方法Platypus.metaClass.layEgg={->returnnewFurryAnimal()}defbaby=newPlatypus().layEgg()如果觉得这里举的有关动物的例子有些浅显,那么考虑 Java 语言中最常用的一个类:


清单 2. 动态添加 layEgg() 方法
Platypus.metaClass.layEgg = {-> 
 return new FurryAnimal() 
} 
 
def baby = new Platypus().layEgg() 

如果觉得这里举的有关动物的例子有些浅显,那么考虑 Java 语言中最常用的一个类:String。

Groovy 为 java.lang.String 提供的新方法

使用 Groovy 的乐趣之一就在于它添加到 java.lang.String 中的新方法。padRight() 和 reverse() 等方法提供了简单的 String 转换,如清单 3 所示。


清单 3. Groovy 添加到 String 的方法
println "Introduction".padRight(15, ".") 
println "Introduction".reverse() 
 
//output 
Introduction... 
noitcudortnI 

但是添加到 String 的方法并不仅限于简单的功能。如果 String 是一个组织良好的 URL,那么只需一行代码,您就可以将 String 转换为 java.net.URL 并返回 HTTP GET 请求的结果,如清单 4 所示:


清单 4. 发出 HTTP GET 请求
println "http://thirstyhead.com".toURL().text 
 
//output 
<html> 
 <head> 
  <title>ThirstyHead: Training done right.</title> 
<!-- snip --> 

再举一个例子,运行一个本地 shell 就像发出远程网络调用那么简单。一般情况下我将在命令提示中输入 ifconfig en0 以检查网卡的 TCP/IP 设置。(如果您使用的是 Windows® 而不是 Mac OS X 或 Linux®,那么尝试使用 ipconfig)。在 Groovy 中,我可以通过编程的方式完成同样的事情,参见清单 5:

上一页  1 2 3 4 5 6 7  下一页

Tags:实战 Groovy 使用

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接