Groovy高效编程——动态改变对象的能力

豆豆网   技术应用频道   2008年01月22日  【字号: 收藏本文

内容摘要:从Groovy1.1beta-2开始,实现动态改变对象的能力变的十分简单。而从Groovy1.1beta-3开始,Groovy的动态性有了进一步的增强。

  从Groovy1.1beta-2开始,实现动态改变对象的能力变的十分简单:

  一开始,我们有这样一个类:

class Person {
String name
}

  该类的实例都是哑巴,不能说话,作为造物主的我们该完善它们,使它们能自我介绍(添加实例方法):class Person {
String name
}
// 添加自我介绍的行为
Person.metaClass.introduce << {println "I'm $name"} 

  现在让我们看看,它们到底是否真的能够开口自我介绍了呢:

class Person {
String name
}
  // 添加自我介绍的行为
Person.metaClass.introduce << {println "I'm $name"}
def person = new Person(name:"山风小子")
person.introduce()

  运行结果:

  I'm 山风小子

  嗯~人类改造成功~

  但人应该有性别吧,嗯~对的,加个性别属性sex(添加属性):

class Person {
String name
}
// 添加自我介绍的行为
Person.metaClass.introduce << {println "I'm $name"}
// 添加性别属性,默认为男(Male)
Person.metaClass.sex = "Male"
def person = new Person(name:"山风小子")
person.introduce()
println person.sex 

  运行结果:

  I'm 山风小子

  Male

  但做男人累啊~为了买房,娶妻拼命赚钱,做女人算了,做变性手术:

class Person {
String name
}
// 添加自我介绍的行为
Person.metaClass.introduce << {println "I'm $name"}
// 添加性别属性,默认为男(Male)
Person.metaClass.sex = "Male"
def person = new Person(name:"山风小子")
person.introduce()
println person.sex
// 做变性手术,变为女的(Female)
person.sex = "Female"
println person.sex 

  运行结果:

作者:山风小子    责编:豆豆技术应用

正在加载评论...