实战 Groovy(2)-创建最初的 Gwitter 类
来源:互联网 发布:淘宝买望远镜可靠吗 编辑:程序博客网 时间:2024/04/29 06:07
Groovy 脚本很适合编写非正式的实用程序和证实概念,但是编写 Groovy 类也不太困难。另外,可以编译 Groovy 类并从 Java 代码调用它们。
例如,可以编写清单 4 所示的 Tweet.groovy:
清单 4. Tweet.groovy
class Tweet{ String content String published String author String toString(){ return "${author}: ${content}" }}
这是一个 Plain Old Groovy Object (POGO),是非常复杂的 Plain Old Java Object (POJO) 的替代品。
现在,把 清单 2 中的搜索脚本转换为 Search.groovy,见清单 5:
清单 5. Search.groovy
class Search{ static final String addr = "http://search.twitter.com/search.atom?q=" static Object[] byKeyword(String query){ def results = [] def feed = new XmlSlurper().parse(addr + query) feed.entry.each{entry-> def tweet = new Tweet() tweet.author = entry.author.name tweet.published = entry.published tweet.content = entry.title results << tweet } return results as Object[] }}
通常情况下,我会让结果保持 java.util.ArrayList
的形式。但是,本文后面使用的 javax.swing.JList
需要一个 Object[]
,所以这里提前做一些准备。
注意,我在 Search.groovy 中去掉了 main()
方法。现在如何与这个类交互呢?当然可以通过单元测试!创建 SearchTest.groovy,见清单 6:
清单 6. SearchTest.groovy
class SearchTest extends GroovyTestCase{ void testSearchByKeyword(){ def results = Search.byKeyword("thirstyhead") results.each{ assertTrue it.content.toLowerCase().contains("thirstyhead") || it.author.toLowerCase().contains("thirstyhead") } }}
如果在命令提示上输入 groovy SearchTest
,然后看到 OK (1 test)
(见清单 7),就说明已经成功地把搜索脚本转换为可重用的类了:
清单 7. 成功测试的运行结果
$ groovy SearchTest.Time: 4.64OK (1 test)
现在底层基础结构已经就位了,下一步是开始为它提供漂亮的前端。
<script type="text/javascript"><!--google_ad_client = "ca-pub-1944176156128447";/* csdn 横中 */google_ad_slot = "7877933139";google_ad_width = 468;google_ad_height = 60;//--></script><script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script>
- 实战 Groovy(2)-创建最初的 Gwitter 类
- 实战 Groovy: Groovy:Java 程序员的 DSL
- 实战 Groovy: Groovy:Java 程序员的 DSL
- 推动反对抵抗最初创建的问题
- 最初的最初
- 【转】实战 Groovy: Groovy:Java 程序员的 DSL
- ofbiz的.groovy中创建非静态类的对象
- 最初的
- 实战 Groovy: Groovy:Java 程序员的 DSL——用 Groovy 编写更少的代码,完成更多的工作
- 实战 Groovy: 用 Groovy 进行 JDBC 编程
- 实战 Groovy(3)- Groovy中的SwingBuilder 简介
- Groovy轻松入门——Grails实战基础篇(2)
- RFC962_TCP-4 的最初
- [imgFS]最初的想法
- 最初的梦想
- 最初的梦想
- 最初的梦想!
- 最初的接触
- 如何将Android带入互联网数字家庭(4)
- 走向产品——程序员的第三职业通道
- Firefox模拟iPad浏览窗口插件 - iPad User Agent
- (原创)深入研究java对String字符串对象的创建以及管理
- 懒人日记2
- 实战 Groovy(2)-创建最初的 Gwitter 类
- 懒人日记3
- Android实现ListView异步加载图片
- 懒人日记4
- 使用PopupWindow总结
- 实战 Groovy(3)- Groovy中的SwingBuilder 简介
- 懒人日记5
- 实战 Groovy(4)- 添加菜单栏
- mybatis学习笔记(四)