论坛首页 入门技术论坛

groovy动态方法,属性抢鲜

浏览 12780 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2007-06-03  
  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  
   发表时间:2007-06-03  
哈哈~agile_boy可真性急啊

Groovy1.1-beta2大概在6月末发布,其中包含了增强版的ExpandoMetaClass。
0 请登录后投票
   发表时间:2007-06-03  
呵呵,不是我性急,是Graeme先把文档提前发布了
0 请登录后投票
   发表时间:2007-06-03  
汗,变化可真大,看来《groovy in action》中文版出来后,又得补充很多内容了,到时候大家一起来把新的这些内容写出来吧,以便后来者参考学习:)
0 请登录后投票
   发表时间:2007-06-04  

看来俺学习的进度应该加快了。
0 请登录后投票
   发表时间:2007-06-04  
这个特性对于groovy很重要,使她的‘动态’增强了不少
0 请登录后投票
   发表时间:2007-06-04  
to Puras,学习是不可避免的,建议大家在实践中学习应用
1.1发布以后,估计<groovy in action>应该也会更新吧,期望中。。。
0 请登录后投票
   发表时间:2007-06-04  
To agile_boy:
中文版可能会更新,英文版的就只能等《Groovy in Action》第2版
0 请登录后投票
   发表时间:2007-06-12  
呵呵,按现在也想学Groovy了。
0 请登录后投票
   发表时间:2007-06-12  
To simohayha:
学无先后,达者为先
0 请登录后投票
论坛首页 入门技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics