Spread Operator(展开运算符)
一个集合使用展开运算符(*.)可以得到一个元素为原集合各个元素执行后面指定方法所得值的集合
class Person{
String name
int age
String toString(){
return "${name}:${age}"
}
}
def people = [new Person(name:'阿大',age:24),new Person(name:'阿二',age:18)]
println people*.toString()
========================
result:
["阿大:24", "阿二:18"]
Elvis Operator(二元运算符)
由于Groovy中“非空即真”,所以原java中的三元运算符可以简化为二元运算符
String name= person.name?person.name:'unknown'// java的写法
def name2= person.name ?: "unknown" // Groovy 的写法
Safe Navigation/Dereference Operator(安全占位符)
安全占位符(?.)主要用于避免空指针异常
Person user
println user.name// Throws NullPointerException
// 为避免空指针异常,需要加上一个检查,java的写法如下
if (user != null) {
println "Java FirstName = ${user.firstName}"
}
// Groovy语法的写法
println "Groovy FirstName = ${user?.firstName}"
Field Operator
查了词典field operator翻译为“场算符”,就中文来讲我不好理解。所以就不翻译了。
由于Groovy自动的支持属性的getter,但有时候应某种特定的需求,需要自动写一个特殊的getter,如果有时候需要调用特殊的getter,有
时候又想调用普通POJO那样的getter,那么怎么办呢?使用Groovy的Field Operator就可以轻松的解决这个问题。实例如下:
class Todo {
String name
def getName() {
println "Getting Name"
name
}
}
def todo = new Todo(name: "Jim")
println todo.name
println todo.@name
========
result:
Getting Name
Jim
Jim
不使用Field Operator调的是写的getter
使用Field Operator调的是POJO的getter
Method Closure Operator
我们知道闭包可以被作为一个方法的参数,但是怎么让一个方法作为一个方法的参数呢?Method Closure Operator就是用来解决上述问题的,它允许将一个方法当成一个闭包作为另一个方法的参数。
def list = ['老大','老二','老三']
//常规的遍历
list.each{
println it
}
String printName(name){
println name
}
//将printName作为参数进行遍历
list.each(this.&printName)
分享到:
相关推荐
Java中使用Groovy的三种方式,详细见我的博客。
赠送jar包:groovy-3.0.9.jar; 赠送原API文档:groovy-3.0.9-javadoc.jar; 赠送源代码:groovy-3.0.9-sources.jar;...人性化翻译,文档中的代码和结构保持不变,注释和说明精准翻译,请放心使用。
Groovy 调用 Java 类groovy 调用 Java class 十分方便,只需要在类前导入该 Java 类,在 Groovy 代码中就可以无缝使用该
赠送jar包:groovy-2.5.1.jar; 赠送原API文档:groovy-2.5.1-javadoc.jar; 赠送源代码:groovy-2.5.1-sources.jar;...人性化翻译,文档中的代码和结构保持不变,注释和说明精准翻译,请放心使用。
使用该种语言不必编写过多的代码,同时又具有闭包和动态语言中的其他特性。 Groovy是JVM的一个替代语言(替代是指可以用 Groovy 在Java平台上进行 Java 编程),使用方式基本与使用 Java代码的方式相同,该语言特别...
eclipse中的groovy插件 eclipse中的groovy插件 实用
Java调用Groovy,实时动态加载数据库groovy脚本,java读取mongoDB的groovy脚本,加载实时运行,热部署
Groovy入门经典 中英文版本,包含以下文件: Groovy Program.pdf Groovy入门经典.pdf 图书链接:http://product.china-pub.com/36984
Groovy学习资料-中文.rar。Groovy学习资料。Grails学习资料。mht网页格式。
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版本,希望...
2.@Delegate只有当派生类是真正可替换的,而且可代替基类使用时,继承才显示出其优势 3.@Immutable不可变对象天生是线程安全的,将其字段标记为f
groovy入门经典,groovyeclipse 插件
Making Java Groovy is a practical handbook for developers who want to blend Groovy into their day to day work with Java It starts by introducing the key differences between Java and Groovy and how you...
Groovy语言。 里面详细介绍了一些很有意思的方法。
软件项目的可扩展性和动态维护性是非常重要的,例如在微服务的网关动态过滤器中,要实现过滤器的动态更新而不影响项目的持续运行,就需要借助groovy的动态编译功能,而这个功能是通过 .groovy文件实现的。...
Groovy在Spring中的简单使用,欢迎下载!
虽然 Groovy 的语法源于 Smalltalk 和 Ruby 这类语言的理念,但是可以将它想像成 Java 语言的一种更加简单、表达能力更强的变体。(在这点上,Ruby 与 Groovy 不同,因为它的语法与 Java 语法差异很大。) 许多 Java...
Groovy轻松入门—搭建Groovy开发环境 Groovy轻松入门—搭建Groovy开发环境
groovy脚本实现对数据库的增删改查,groovy脚本不需要编译,十分实用
使用该种语言不必编写过多的代码,同时又具有闭包和动态语言中的其他特性。 Groovy是JVM的一个替代语言(替代是指可以用 Groovy 在Java平台上进行Java 编程),使用方式基本与使用 Java代码的方式相同,该语言特别...