diegodfsd
12/5/2011 - 5:24 PM

Meta Programação Groovy

Meta Programação Groovy

String.metaClass.StartWith = { text ->
    delegate.toString() ==~ /^(?i)(${text}).*$/
}

String.metaClass.EndWith = { text ->
    delegate.toString() ==~ /^(?i)[\w|\s]+(${text})$/
}

class Pessoa{
    String nome
    String sobrenome
    int idade
}

//método de classe
Pessoa.metaClass.Andar = {
    println "${nome} esta andando."
}

//método de instância
def john = new Pessoa(nome: "John Due", idade:26)
john.metaClass.Correr = {
    println "${nome} esta correndo."
}
    
if(john.nome.EndWith("due"))
    println "end"
    
john.Andar()
john.Correr()

def jane = new Pessoa(nome:"Jane Due", idade:25)

if(jane.nome.StartWith("jane"))
    println "start"

jane.Andar()
jane.Correr()