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()