`
agile_boy
  • 浏览: 558414 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

groovy动态方法,属性抢鲜

阅读更多
  groovy1.1虽然还没有发布正式的release,但是动态创建方法,属性,构造函数及静态方法的特性已经在svn版本中实现了,其官方文档也已经发布ExpandoMetaClass,详细示例请参考官方文档,这里摘录一点文档的示例,先饱饱眼福 :),呵呵groovyers也不需要羡慕javascript ,ruby等的动态增加方法特性了.
  给String动态增加swapCase方法
java 代码
 
  1. String.metaClass.swapCase = {->  
  2.       def sb = new StringBuffer()  
  3.       delegate.each {  
  4.            sb << (Character.isUpperCase(it as char) ? Character.toLowerCase(it as char) :   
  5.                    Character.toUpperCase(it as char))  
  6.       }  
  7.       sb.toString()  
  8. }  
  注意缺省在ExpandoMetaClass中,动态增加的东东是不支持继承的,即你在父类中增加的新方法,属性等在子类中并不存在。要想能被继承,需要在你的应用程序(main方法)或者Servelt启动前,执行ExpandoMetaClass.enableGlobally()方法。

 最后这个ExpandoMetaClass在1.1的beta1中并没有,尝鲜着需从svn上build;),或者用我2006-6-3编译的snapshot版本,为了简单期间,我只提供groovy-all-1.1-BETA-2-SNAPSHOT.jar下载,运行的命令行是:
java 代码
 
  1. java -cp groovy-all-1.1-BETA-2.jar org.codehaus.groovy.tools.GroovyStarter --main groovy.ui.Console  
分享到:
评论
17 楼 zmg229 2007-08-16  
C:\Documents and Settings\jacky_zhang>java -cp D:\develop\grails-0.5.6\lib\commons-lang-2.1.jar;D:\dev
elop\groovy-1.1-BETA-1\lib\antlr-2.7.6.jar;D:\develop\groovy-1.1-BETA-1\lib\commons-cli-1.0.jar;D:\dev
elop\groovy-1.1-BETA-1\lib\asm-2.2.jar;D:\develop\groovy-1.1-BETA-1\lib\groovy-1.1-BETA-1.jar;D:\devel
op\groovy-1.1-BETA-1\lib\commons-lang-1.0.jar org.codehaus.groovy.tools.GroovyStarter --main groovy.ui
.GroovyMain --classpath "D:\develop\grails-0.5.6\lib\commons-lang-2.1.jar;D:\develop\groovy-1.1-BETA-1
\lib\commons-lang-1.0.jar" -e " import org.apache.commons.lang.WordUtils;class Greeter {def name;Greet
er(who) { name = WordUtils.capitalize(who) };def salute() { println 'Hello ' + name; }};new Greeter('w
orld').salute();"
Hello World

强啊!!!
远离尘嚣
16 楼 山风小子 2007-06-14  
"如果使用IDE我一般是Eclipse+Groovy 插件+grails run-app"
哈哈~我也是
不过11月份JetBrains公司会发布JetGroovy插件,支持Groovy和Grails开发,到那时我打算使用Intellij IDEA了
15 楼 agile_boy 2007-06-13  
to Puras
如果使用IDE我一般是Eclipse+Groovy 插件+grails run-app

如果不喜欢IDE,建议UltraEdit/EditPlus就很不错啊
14 楼 Puras 2007-06-13  
想请教一下各位做GRails时用什么开发环境
中午的时候试了一下Eclipse
感觉操作烦锁
而且支持的很差
有很多东西改完了不能自动更新
13 楼 山风小子 2007-06-13  
To Puras:
到时让我们欣赏一下你的作品
12 楼 agile_boy 2007-06-13  
加油,Puras!!!
11 楼 Puras 2007-06-13  
朋友让我帮他的公司做个网站
准备用GRails来弄

抓紧时间
10 楼 agile_boy 2007-06-13  
三人同行,必有我师,何况我们多人,groovyers 加油!
9 楼 山风小子 2007-06-12  
To simohayha:
学无先后,达者为先
8 楼 simohayha 2007-06-12  
呵呵,按现在也想学Groovy了。
7 楼 山风小子 2007-06-04  
To agile_boy:
中文版可能会更新,英文版的就只能等《Groovy in Action》第2版
6 楼 agile_boy 2007-06-04  
to Puras,学习是不可避免的,建议大家在实践中学习应用
1.1发布以后,估计<groovy in action>应该也会更新吧,期望中。。。
5 楼 山风小子 2007-06-04  
这个特性对于groovy很重要,使她的‘动态’增强了不少
4 楼 Puras 2007-06-04  

看来俺学习的进度应该加快了。
3 楼 笨笨狗 2007-06-03  
汗,变化可真大,看来《groovy in action》中文版出来后,又得补充很多内容了,到时候大家一起来把新的这些内容写出来吧,以便后来者参考学习:)
2 楼 agile_boy 2007-06-03  
呵呵,不是我性急,是Graeme先把文档提前发布了
1 楼 山风小子 2007-06-03  
哈哈~agile_boy可真性急啊

Groovy1.1-beta2大概在6月末发布,其中包含了增强版的ExpandoMetaClass。

相关推荐

    groovy动态方法

    总的来说,`groovy动态方法`和`MetaClass`、`ExpandoMetaClass`以及MOP是Groovy强大特性的体现,它们为开发者提供了在运行时改变类行为的能力,使得Groovy代码更加灵活多变。掌握这些概念和技巧,将有助于你编写出更...

    Groovy 动态修改XML

    这篇名为“Groovy动态修改XML”的博文可能详细介绍了如何使用Groovy对XML文档进行动态修改。通常,这个过程包括以下步骤: 1. **解析XML**:首先,使用XMLSlurper或XMLParser将XML字符串或文件转换为Groovy的DOM...

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

    3. 加载并执行Groovy脚本:通过GroovyClassLoader的`parseClass()`方法解析Groovy源码,然后使用`newInstance()`方法创建脚本实例,最后通过`invokeMethod()`方法执行脚本中的方法。 在Java与MongoDB的交互中,我们...

    Groovy DSL 动态规则(rule)执行引擎流程引擎特色风控系统规则引擎动态接口配置(低代码)

    自创Groovy DSL 动态规则(rule)执行引擎, 流程引擎. 特色 风控系统, 规则引擎, 动态接口配置(低代码)Groovy DSL 动态规则(rule)执行引擎。DSL(特定领域语言): 开发 和 业务 共识的语言。方便业务表达需求, 方便开发...

    java 动态脚本语言 精通 Groovy

    Groovy是一种基于Java平台的动态脚本语言,它在Java开发者中越来越受欢迎,因为它提供了简洁、灵活的语法,以及强大的动态编程能力。Groovy与Java兼容性极佳,可以直接调用Java类库,使得它在Java生态系统中具有广泛...

    JVM 动态执行Groovy脚本的方法

    本文将详细讲解如何使用JVM动态执行Groovy脚本的方法,主要包括利用JShell执行代码、调试模式下动态执行代码以及利用javax.script包执行Groovy脚本。以下是对各知识点的详细说明。 1. 利用JShell执行代码 Java 9 ...

    groovy和Java相互调用1

    这种方法的优点是Groovy脚本的修改不需要重新编译整个项目,因为Java代码可以通过反射动态地找到并调用Groovy方法。这里,我们首先创建一个`GroovyClassLoader`来解析Groovy源文件,然后通过`newInstance`方法实例化...

    groovy 最新 学习 动态

    Groovy是一种基于Java平台的动态编程语言,设计用于提高开发者的生产力和代码的简洁性。在Java生态系统中,Groovy以其灵活性和与Java的良好互操作性而受到广泛关注。本篇文章将深入探讨Groovy的最新学习动态,特别是...

    ASTTransformation#visit 方法中访问 Groovy 类、方法、字段、属性

    【Groovy】编译时元编程 ( ASTTransformation#visit 方法中访问 Groovy 类、方法、字段、属性 | 完整代码示例及进行编译时处理的编译过程 ) https://hanshuliang.blog.csdn.net/article/details/122815793 博客源码

    Groovy在Spring中的简单使用

    然后,定义一个 Groovy bean,例如 helloWorldService,使用 script-source 属性指定 Groovy 脚本的位置,并使用 property 元素设置该脚本的属性值。 在 Spring 中,可以设置默认的延时刷新时间,以便在 Groovy ...

    groovy

    5. 链式调用:对象属性和方法可以连续调用,如`object.property.method()`,增强了代码的可读性。 三、领域应用 1. 脚本和自动化:Groovy的简洁语法和动态特性使其在编写脚本和自动化任务中非常高效,例如持续集成...

    Groovy和Grails配置方法

    ### Groovy和Grails配置方法 #### 一、Groovy与Grails简介 Groovy是一种强大的面向对象编程语言,它运行在Java平台上,并且能够直接与Java代码进行交互。Groovy支持函数式编程特性,拥有丰富的语法糖以及简洁的...

    Groovy Script 入门

    2. **动态添加方法**:可以在运行时动态添加方法到类或对象。 #### 五、总结 通过本文的介绍,我们了解到Groovy脚本作为一种强大的脚本语言,在Java平台上的应用十分广泛。无论是进行简单的脚本编写还是复杂的项目...

    Groovy DSL 动态规则(rule)执行引擎

    Groovy DSL动态规则执行引擎是一种基于Groovy语言的领域特定语言(Domain-Specific Language)来构建规则引擎的解决方案。这种引擎特别适用于流程控制、风险管理系统以及动态接口配置,特别是那些需要快速迭代和低...

    JUN SpringBoot API Service 是一个基于SpringBoot+Groovy+SQL动态生成API

    JUN SpringBoot API Service 是一个基于SpringBoot+Groovy+SQL动态生成API并动态发布,且发布后可动态执行groovy脚本及SQL脚本的API服务项目。提供在线执行动态程序脚热加载本及动态生成API并执行的功能。支持动态...

    groovy速查手册

    Groovy提供了丰富的API来操作运行时的对象模型,如使用反射来动态调用方法或获取对象的属性。 #### 七、实用技巧 - **命令行工具**:Groovy提供了一系列命令行工具,如`groovy`命令,用于执行Groovy脚本、评估...

    groovy基础语法.pdf

    在Groovy中,基本语法包括变量、属性、方法和闭包的定义,控制结构如if-else、for循环、while循环、switch语句,以及类和对象的操作等。 变量和数据类型: Groovy是动态类型语言,变量无需声明类型即可直接赋值使用...

    Groovy学习资料

    Groovy可以在运行时改变类的结构,这意味着你可以动态地添加方法或属性。这对于快速原型设计和敏捷开发非常有用。同时,Groovy还支持 Duck Typing,即“如果它走起来像鸭子,那么它就是鸭子”,这意味着不需预先声明...

    Groovy.in.Action.2nd.Edition.pdf

    1. 动态类型和静态类型:Groovy语言在运行时提供动态类型特性,如动态方法分发,而在编译时则提供静态类型检查和类型推断,使得代码可以在保持灵活的同时,还能获得编译时的类型安全性。 2. Groovy的基本特性:...

    Groovy MOP

    3. **Property Access**: 类似于动态方法,Groovy MOP也允许动态属性访问。即使在类定义中没有声明,你也可以读取或设置对象的属性。Groovy会查找MetaClass来处理属性的存取。 4. **ExpandoMetaClass**: ...

Global site tag (gtag.js) - Google Analytics