您的位置:首页 > 编程语言

关于Groovy里面元编程(MetaProgramming)的一点总结

2011-09-03 01:51 281 查看
Groovy的元编程有两种方式,EMC(支持为类的某个实例或所有实例添加动态行为,主要是依托delegate),CATEGORY支持为特定的一些实例动态添加类行为,并且能够很好的集成目前java中存在的工具类方法。具体如以下代码所示:

EMC方式:

 // 为所有对象添加动态行为               

String.metaClass.shout = {

->

return delegate.toUpperCase()

}

println "Hello MetaProgramming".shout()

 // output HELLO METAPROGRAMMING

 // 为单个对象添加动态行为

def message="Message"

message.metaClass .shout={

->

delegate.toUpperCase()

}

println message.shout()

 // output MESSAGE

CATEGORY:

class MetaTest extends GroovyTestCase{

void testCategory(){

    String message = "Hello"

    use(StringHelper){

      assertEquals "HELLO", message.shout()

      assertEquals "GOODBYE", "goodbye".shout()

    }

    shouldFail{

      message.shout()

      "foo".shout()

    }

  }

}

class StringHelper{

  static String shout(String self){

    return self.toUpperCase()

 }

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息