实战 Groovy: 使用闭包、ExpandoMetaClass 和类别进行元编程
2009-11-19 00:00:00 来源:WEB开发网
清单 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:
更多精彩
赞助商链接