首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

实战 Groovy(二)-创建最初的 Gwitter 类

2012-07-01 
实战 Groovy(2)-创建最初的 Gwitter 类Groovy 脚本很适合编写非正式的实用程序和证实概念,但是编写 Groovy

实战 Groovy(2)-创建最初的 Gwitter 类

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)

现在底层基础结构已经就位了,下一步是开始为它提供漂亮的前端。


更新的详细信息请参考  java进阶网 www.javady.com

热点排行