`
agile_boy
  • 浏览: 550056 次
  • 性别: 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。

相关推荐

Global site tag (gtag.js) - Google Analytics