`
friendsys
  • 浏览: 348073 次
  • 性别: Icon_minigender_1
  • 来自: 福州
社区版块
存档分类
最新评论

Groovy Tutorial 笔记

阅读更多
Groovy Tutorial 笔记
官网上的例子会更多,更详细一些


1:object?.method调用的时候,如果对象是空,不会抛出异常,只会返回一个null

在.Groovy中间中使用单独的一个中文"" String的时候,有可能会提示错误,加个空格就好,比较奇怪

字符串String中加入$xx符号后, 就可以成为GString,可以方便的使用运行符进行操作,包括==
其中的$操作的默认数据并不会一直绑定,只会在声明的时候,进行String的生成,后面都不会进行修改,如果需要进行数据绑定
可以使用Closure
def fullname = "$firstname $surname"   //不带绑定
fullname = "${-> firstname} $surname"  //带Bindable

字符串方法的调用,并不会修改掉源对象

加入过滤的查询,返回一个List
words.findAll{w -> w == w.reverse() && w.size() > 5}

数字比较特殊的一个运算符
assert 4 <=> 3 == 1  调用的等同于 4.compareTo(3)  结果应该是介于-1,0,1之间

日期的操作

静态导入以及重命名
import static java.util.Calendar.getInstance as now
使用时候now().time

import static Integer.*
可以直接使用其中的静态方法


日期方便的操作
new Date() + 1.hour + 3.weeks - 2.days 
new Date() + 1 //默认是加上一天

格式化日期
input = "1998-06-03"
df1 = new SimpleDateFormat("yyyy-MM-dd")
date = df1.parse(input)

集合和区间(Range)的使用

assert [1,2,3,4] == (1..4)

Map的key可以直接声明为一个对象,不过最终也被转换成字符串的形式
def map = [a:1, 'b':2]

List.groupBy { it.属性 } 可以方便的按照指定的属性进行分组排序,注意返回的结果会比较特殊

assert "1.23".replaceAll(/./){ ch ->
ch.next()
} == '2/34'   会使用.符号的下一位编码进行转换 (){}的配合 就是replaceAll中传入了2个参数,方便的操作匹配的结果

控制语句
只要对象不是null或者size!=0,或者现实的false,那么都是true

List*.属性 会返回集合内所有的该属性组成的集合

闭包
doubleNum = { num -> num * 2 } 区别与方法是=的存在
调用时候可以直接doubleNum(3),就和普通的方法定义一样, 不过这里的返回结果是最后一行的表达式,也可以使用(){}传递多个参数

使用闭包封装参数
map = ['a': 1, 'b': 2]
doubler = {key, value -> map[key] = value * 2}
map.each(doubler)

这里用一个闭包,接收了each所传递的两个参数

另外一种接受的形式
def doubleMethod(entry) {
map[entry.key] = entry.value * 2
}
doubler = this.&doubleMethod
map.each(doubler)
使用this.&Closure名进行复制 ----该方法似乎无效了

[1, 2, 3].grep{ it < 3 } == [1, 2] //进行过滤

any和every进行判断

collect对每一个对象进行操作,并且累计结果
(1..9).collect{it}.join() == '123456789'

实现比较大小
def min = { x, y -> [x, y].min() }

XML操作

从一个List创建一个XML
// create XML as input
def input = new XStream().toXML(athleteList)

解析一个XML
def records = new XmlSlurper().parseText(XML)


简单的SQL连接
def foo = 'cheese'
def sql = Sql.newInstance("jdbc:mysql://localhost:3306/mydb", "user","pswd", "com.mysql.jdbc.Driver")

sql.eachRow("select * from FOOD where type=${foo}") {
println "Gromit likes ${it.name}"
}

使用DataSets
连接同上
def food = sql.dataSet('FOOD')
def cheese = food.findAll { it.type == 'cheese' }
cheese.each { println "Eat ${it.name}" }


com.thoughtworks.xstream这个包好像还不错
进行Groovybean到xml的转换
生成的东西视乎是序列化时用到的格式

Groovy进行测试

与Junit3.3结合就是继承 extends GroovyTestCase
然后使用testMethod(方法名) 来进行测试

如果结合Junit4.4,可以使用Annotation的方式进行
可以使用静态导入assert部分,方便使用
import static org.junit.Assert.assertEquals

@Test(expected=ArithmeticException)
void divideByZero() {
println 1/0
}
这个用于测试异常情况

至于JUnitCore.main(ArithmeticTest.name) 暂时不懂什么意思

@Before 注解用于定义初始化的方法,@After 则是在测试结束时候

Junit4.4下的测试还包括了
@RunWith(Theories)
@RunWith(Parameterized)  需要了解

调用远程服务的方法
import groovy.net.soap.SoapClient
proxy = new SoapClient("http://www.webservicex.net/CurrencyConvertor.asmx?WSDL")
rate = proxy.ConversionRate("USD", "EUR")
println rate....

与Spring整合
可以方便的使用@Component 以及@AutoWired进行注入

详细例子看官网上的更多...
分享到:
评论

相关推荐

    Groovy学习笔记 PDF版

    在《Groovy学习笔记》这本书中,你可能会学到如何快速入门Groovy,理解其基本语法,包括变量、控制流、类和对象的创建,以及如何利用Groovy的特性来提高开发效率。此外,书中可能还会涵盖Groovy在实际项目中的应用,...

    Groovy 学习笔记

    Groovy是一种动态、灵活的编程语言,它是Java平台上的一个重要的补充。Groovy结合了Python、Ruby和Smalltalk等语言的特性,同时保留了与Java的无缝集成能力,使得它在编写脚本、构建工具、Web应用以及企业级应用程序...

    Groovy学习笔记.pdf

    Groovy是一种动态、灵活的编程语言,它是Java平台上的一个主要补充,特别是在脚本编写和快速原型设计方面表现突出。...这份"Groovy学习笔记.pdf"应该会提供一个良好的起点,帮助你踏上Groovy的学习之旅。

    Groovy学习笔记

    ### Groovy学习笔记知识点梳理 #### 一、Groovy简介 - **概念**:Groovy是一种灵活的脚本语言,其设计初衷是为了更好地服务于Java开发者。它具备许多现代动态语言的特点,比如Python和Ruby,同时又能够无缝地与Java...

    groovy学习笔记

    以下是对Groovy学习笔记各章节的详细解释: ### 第1章:数字和字符串 在Groovy中,所有的数字都是Object类型的,这意味着你可以在对象上调用方法。例如,你可以直接在数字上使用加减乘除等运算符,如`12 + 8`。...

    Java整合Groovy脚本笔记

    Java整合Groovy脚本,Java整合Groovy脚本Java整合Groovy脚本,Java整合Groovy脚本Java整合Groovy脚本,Java整合Groovy脚本Java整合Groovy脚本,Java整合Groovy脚本Java整合Groovy脚本,Java整合Groovy脚本Java整合...

    Groovy学习笔记 Struts2集成--Groovy类作为Action

    通过阅读文章《Groovy学习笔记 Struts2集成--Groovy类作为Action》,你可以更深入地了解如何在实际项目中利用Groovy的特性来优化Struts2应用。提供的压缩包文件`struts2-groovy-plugin`可能包含了Struts2 Groovy插件...

    The Groovy 2 Tutorial(LeanPub)

    《Groovy 2教程》是LeanPub上的一本推荐教程,Groovy官网也对其进行了推荐。Groovy是一种基于JVM(Java虚拟机)的敏捷开发语言,它结合了Python、Ruby和Smalltalk的许多强大的特性,使Java平台的脚本编写更加简单和...

    Groovy_笔记

    根据给定的文件信息,以下是对Groovy编程语言中几个关键知识点的深入解析: ### 多线程在Groovy中的运用 在Groovy中,线程的创建与启动非常直观,可以通过构造`Thread`对象并传入一个闭包(Closure)来实现。闭包...

    apache-groovy-3.0.8.zip apache官网的groovy3.0.8版本

    apache-groovy-3.0.8.zip apache官网的groovy3.0.8版本,希望大家多多下载,apache-groovy-3.0.8.zip apache官网的groovy3.0.8版本,希望大家多多下载,apache-groovy-3.0.8.zip apache官网的groovy3.0.8版本,希望...

    Java调用Groovy,实时动态加载数据库groovy脚本

    1. 引入Groovy库:在Java项目中添加Groovy的相关依赖,通常是`groovy-all`,确保Java能够访问Groovy运行时环境。 2. 创建GroovyClassLoader:使用这个类加载器可以动态加载和执行Groovy脚本。它继承自Java的...

    groovy-2.3.6-installer

    Groovy是一种动态、开源的编程语言,它是Java平台上的一个JVM(Java Virtual Machine)语言。Groovy结合了Python、Ruby和Perl等脚本语言的简洁性和灵活性,并且完全兼容Java,可以无缝地与Java代码集成。在"groovy-...

    groovy入门经典,groovyeclipse 插件

    Groovy是一种动态、灵活的编程语言,它是Java平台上的一个扩展,可以无缝集成到Java项目中。Groovy的语法简洁,支持面向对象编程、函数式编程,并提供了许多现代语言特性,如闭包和动态类型。这使得Groovy成为快速...

    Groovy Script 入门

    ### Groovy Script 入门知识点详解 #### 一、Groovy脚本简介 Groovy是一种灵活的面向对象的编程语言,它运行在Java平台上。由于其语法简洁且与Java高度兼容,因此对于Java开发者来说非常容易上手。Groovy不仅支持...

    Groovy入门教程[参照].pdf

    Groovy 入门教程 Groovy 是一种基于 Java 语言的脚本语言,运行在 JVM 中,语法与 Java 相似,但抛弃了 Java 的一些烦琐的语法规则,提供了更加简洁和灵活的编程体验。 Groovy 的特点 1. 简洁的语法:Groovy 语法...

    groovy和Java相互调用1

    标题中的“Groovy和Java相互调用1”指的是在编程时如何在Groovy语言环境中调用Java类,以及反之,如何在Java程序中调用Groovy类。这是一种跨语言交互的方式,特别是在混合使用Groovy和Java的项目中非常常见。 ...

    groovy

    Groovy是一种基于Java平台的、动态的、强大的编程语言,它设计的目标是增强开发者的生产力。Groovy结合了Java的静态类型系统和Python、Ruby等动态语言的灵活性,使得开发者可以更加高效地编写代码。本篇文章将深入...

Global site tag (gtag.js) - Google Analytics