赞
踩
Groovy非运算符如下:
assert (!true) == false
assert (!‘foo’) == false
assert (!‘’) == true
Groovy支持?.
安全占位符,这个运算符主要用于避免空指针异常,譬如:
def person = Person.find { it.id == 123 }
def name = person?.name
assert name == null
Groovy支持.@
直接域访问操作符,因为Groovy自动支持属性getter方法,但有时候我们有一个自己写的特殊getter方法,当不想调用这个特殊的getter方法则可以用直接域访问操作符。如下:
class User {
public final String name
User(String name) { this.name = name}
String getName() { “Name: $name” }
}
def user = new User(‘Bob’)
assert user.name == ‘Name: Bob’
assert user.@name == ‘Bob’
Groovy支持.&
方法指针操作符,因为闭包可以被作为一个方法的参数,如果想让一个方法作为另一个方法的参数则可以将一个方法当成一个闭包作为另一个方法的参数。如下:
def list = [‘a’,‘b’,‘c’]
//常规写法
list.each{
println it
}
String printName(name){
println name
}
//方法指针操作符写法
list.each(this.&printName)
Groovy支持将?:
三目运算符简化为二目,如下:
displayName = user.name ? user.name : ‘Anonymous’
displayName = user.name ?: ‘Anonymous’
Groovy支持*.
展开运算符,一个集合使用展开运算符可以得到一个元素为原集合各个元素执行后面指定方法所得值的集合,如下:
cars = [
new Car(make: ‘Peugeot’, model: ‘508’),
null,
new Car(make: ‘Renault’, model: ‘Clio’)]
assert cars*.make == [‘Peugeot’, null, ‘Renault’]
assert null*.make == null
关于Groovy的其他运算符就不多说,类比Java吧。
【工匠若水 http://blog.csdn.net/yanbober 转载请注明出处。点我开始Android技术交流】
4 程序结构
==========
这里主要讨论Groovy的代码组成结构,具体如下细则。
4-1 包名
包名的定义和作用及含义完全和Java一样,不再介绍,如下:
// defining a package named com.yoursite
package com.yoursite
4-2 Imports引入
常规的imports导包操作和Java一样,如下:
//例1:
import groovy.xml.MarkupBuilder
// using the imported class to create an object
def xml = new MarkupBuilder()
assert xml != null
//例2:
import groovy.xml.*
def markupBuilder = new MarkupBuilder()
assert markupBuilder != null
assert new StreamingMarkupBuilder() != null
//例3:
import static Boolean.FALSE
assert !FALSE
//例4:特殊的,相当于用as取别名
import static Calendar.getInstance as now
assert now().class == Calendar.getInstance().class
不过要特别注意,Groovy与Java类似,已经帮我们默认导入了一些常用的包,所以在我们使用这些包的类时就不用再像上面那样导入了,如下是自动导入的包列表:
import java.lang.*
import java.util.*
import java.io.*
import java.net.*
import groovy.lang.*
import groovy.util.*
import java.math.BigInteger
import java.math.BigDecimal
4-3 脚本与类(脚本的实质)
相对于传统的Java类,一个包含main方法的Groovy类可以如下书写:
class Main {
static void main(String… args) {
println ‘Groovy world!’
}
}
和Java一样,程序会从这个类的main方法开始执行,这是Groovy代码的一种写法,实际上执行Groovy代码完全可以不需要类或main方法&#x
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。