- 浏览: 361729 次
文章分类
最新评论
-
string2020:
select * from tab where user_id ...
(转)JPA JPQL -
hety163:
Java 位运算符 -
hiberatejss:
lz,~这个位运算的作用和反码是一样的吗?
Java 位运算符 -
skcmm:
博主,有个问题想请教下。我在/etc/hosts声明一个域名, ...
nginx泛域名解析 -
kid_ren:
写的好
Java 位运算符
Spread Operator(展开运算符)
一个集合使用展开运算符(*.)可以得到一个元素为原集合各个元素执行后面指定方法所得值的集合
Groovy
代码
- 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" ]
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中的三元运算符可以简化为二元运算
符
Groovy
代码
- String name= person.name?person.name: 'unknown' // java的写法
- def name2= person.name ?: "unknown" // Groovy 的 写法
String name= person.name?person.name:'unknown'// java的写法
def name2= person.name ?: "unknown" // Groovy
的写法
Safe Navigation/Dereference Operator(安全占位符)
安全占位符(?.)主要用于避免空指针异常
Groovy
代码
- Person user
- println user.name// Throws NullPointerException
- // 为 避免空指针异常,需要加上一个检查,java的写法如下
- if (user != null) {
- println "Java FirstName = ${user.firstName}"
- }
- // Groovy 语法的写法
- println "Groovy FirstName = ${user?.firstName}"
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就可以轻松的解决这个问题。实例如下:
Groovy
代码
- 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
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就是用来解决上述问题的,它允许将一个方法当成一个闭包作为另一个方法的参数。
Groovy
代码
- def list = [ '老大' , '老二' , '老三' ]
- //常规的遍 历
- list.each{
- println it
- }
- String printName(name){
- println name
- }
- // 将printName作为参数进行遍历
- list.each(this.&printName)
def list = ['老大','老二','老三'] //常规的遍历 list.each{ println it } String printName(name){ println name } //将printName作为参数进行遍历 list.each(this.&printName)
发表评论
-
转:如何编写UML用例图
2011-04-08 17:01 1957UML用例图是非常有用 ... -
apache配置最大用户数的比较
2011-01-06 15:59 0Apache性能比较测试 8.15 Apache在配置 ... -
(转)JPA JPQL
2010-05-16 23:04 16795JPQL就是一种查询语言,具有与 SQL 相 类似的特 ... -
JQUERY复选框CHECKBOX全选,取消全选
2010-05-11 14:37 1459$("#checkall").click( ... -
XML String和Document的相互转换
2010-05-07 23:29 0在做一般的XML数据交换过程中,我更乐意传递XML字符串,而不 ... -
get the number of online by Play
2010-04-28 14:10 1124It's not an easy problem to sol ... -
play!存在的Cookie设置的bug
2010-04-13 14:24 5596目前playframework使用的Mina在设置Co ... -
playframework的Eclipse插件问题
2010-04-08 17:19 3084在使用playclipse 插件的时候,Eclipse的版本 ... -
nginx泛域名解析
2010-04-05 22:11 5238在dns做一条泛指到主机上,利用nginx做二级域名的rewi ... -
使用play!完成iframe无刷新上传文件
2010-03-25 16:32 2278页面代码片段: <form id="uplo ... -
IE与Firefox兼顾加入收藏
2010-03-23 13:39 1270<script type="text/java ... -
submit和button提交表单的区别
2010-03-23 13:31 19358(1) 下边的写法使得表单frm能够自动提交 :下边的这个f ... -
JPA注解说明
2010-03-19 11:20 3062使用注解元数据 基本注解: 例子: @Entity ... -
playframework的Eclipse插件playclipse
2010-03-16 23:00 1466http://github.com/erwan/playcli ... -
playframework的JPA中对id的处理
2010-03-10 16:35 1952package play.db.jpa; import ja ... -
常用 JPA annotation 参考
2010-03-10 16:18 1828Table Table用来定义entity主表的name,ca ... -
(转)Java虚拟机(JVM)参数配置说明
2010-03-05 10:51 1092Java虚拟机(JVM)参数配置说明 在Java、J2EE ... -
获取msn联系人
2009-07-16 14:22 0网上也有不少例子,但是有些朋友遇到所谓911错误导致无法登录, ... -
将wml转换成html的方法
2009-07-10 17:21 0Opera是直接支持wml的,但是有不少bug。 Firef ... -
unicode详解
2009-05-07 17:31 1636引自:http://baike.baidu.com/view/ ...
相关推荐
Groovy模板是一种强大的脚本语言,它在Java平台上运行,并且与Java紧密集成。Groovy以其简洁的语法、动态类型和面向对象特性而受到开发者欢迎,尤其在构建自动化任务、生成代码、创建脚本和模板等方面表现突出。在这...
在Java开发中,Groovy是一种强大的、动态类型的脚本语言,它可以无缝地与Java代码集成,为开发者提供了更简洁、灵活的语法。本文将深入探讨在Java项目中使用Groovy的三种主要方式,并阐述它们各自的优势和应用场景。...
Freemarker是一个独立于语言的模板引擎,可用于多种语言,包括Groovy。它的语法简洁,强调可读性和分离关注点。在Groovy中,你可以通过Freemarker API创建模板并填充数据。Freemarker模板由控制结构(如`#if`, `#...
5. **标签与参数**:模板中的标签可以带有参数,单个参数可省略名称,多个参数需明确指定。 6. **安全机制**:默认情况下,模板引擎会对内容进行 HTML 转义以防止 XSS 攻击,可以通过 `raw()` 方法禁用转义。 7. **...
- **从Groovy调用Java**:Groovy完全支持调用任何Java代码,就像在Java中一样直接使用。 - **从Java调用Groovy**:在Java中调用Groovy代码需要确保`groovy-all.jar`在类路径中。具体方法包括: - 使用`groovy.util....
本篇教程是关于Groovy编程语言中布尔(Boolean)类型的详细讲解,其中涉及到布尔类型的定义、使用以及Groovy对于布尔值操作的特殊规则。 首先,布尔类型是编程语言中一种基础的数据类型,用于表示逻辑上的真值,...
Play1使用groovy模板作为渲染引擎,而Play2使用Scala模板。在Play1时期,Japid作为groovy的替代品,非常受欢迎。而在Play官方使用Scala替换groovy后,性能虽然有所提高,但是限于Scala编译器的性能,仍然远不如Play2...
在Groovy编程语言中,有一些特殊的注解可以增强代码的功能和效率。在这篇文章中,我们将探讨三个关键的注解:`@Canonical`、`@Delegate`和`@Immutable`,它们都是Groovy语言中用于提高代码简洁性和灵活性的重要工具...
标题中的“Groovy和Java相互调用1”指的是在编程时如何在Groovy语言环境中调用Java类,以及反之,如何在Java程序中调用Groovy类。这是一种跨语言交互的方式,特别是在混合使用Groovy和Java的项目中非常常见。 ...
博客中的作者可能还会讨论如何结合其他Groovy工具,如GPath表达式(用于更方便地查询XML)和Closure(用于定义可重用的代码块),以实现更复杂的XML处理任务。此外,可能还会提到如何在大型项目中使用Groovy来提高...
Groovy还引入了GString,这是一种可变字符串,允许在字符串中嵌入表达式,如`${expression}`。此外,Groovy的运算符重载和元编程能力使代码更加简洁和动态。 在安装GroovyEclipse插件后,开发者可以通过Eclipse的...
5. **列表、映射、范围和正则表达式的字面量声明**:Groovy提供了一种简洁的方式来声明这些数据结构。 6. **GPath**:GPath是一种高效的对象导航机制,用于简化XML和JSON数据的操作。 7. **GroovyBeans**:...
4. **GString与字符串模板**:Groovy的GString能够方便地进行字符串插值,它允许在字符串中嵌入表达式,使得输出动态内容变得更简单。 5. **Groovy Shell与 Grape**:Groovy Shell提供了一个交互式的环境来执行...
5. **断言语句**:Groovy的断言语句用于在开发过程中检查代码的正确性。它会在断言失败时抛出异常。此外,还会介绍如何处理失败的断言。 6. **保留字**:Groovy中的保留字不能被用作变量名或标识符。保留字具有特殊...
5. 容器管理:在Apache Kafka、Cassandra等大数据处理系统中,Groovy用于配置和管理容器。 四、Groovy与Java的交互 由于Groovy和Java都运行在JVM上,两者可以无缝协作。Groovy类可以继承Java类,Java方法可以调用...
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版本,希望...
此外,Groovy支持闭包,这是一种强大的代码块,常用于函数式编程。 2. **动态类型**:Groovy是动态类型的,这意味着变量的类型在运行时确定,而非编译时。这种特性使得开发过程更为敏捷,减少了类型检查带来的编译...