加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

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

发布时间:2020-12-14 16:54:50 所属栏目:大数据 来源:网络整理
导读:Groovy 脚本很适合编写非正式的实用程序和证实概念,但是编写 Groovy 类也不太困难。另外,可以编译 Groovy 类并从 Java 代码调用它们。 例如,可以编写清单 4 所示的 Tweet.groovy: 清单 4. Tweet.groovy class Tweet{ String content String published St

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.64 OK (1 test)

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读