É possivel mudar a declaração de uma classe em tempo se Execução? Como fazer?
17/07/2014 07:01
0
Estava lendo um post do Kico sobre Closure e no exemplo ele definia duas classes e uma closure assim :
class Classe1 {
def closureClasse1
}

class Classe2 {
def closureClasse2
}

def closure = {
println "Sou uma closure bem promíscua"
}

Classe1 classe1 = new Classe1()
Classe2 classe2 = new Classe2()

classe1.closure = closure

classe2.closure = classe1.closure

Porém minha duvida ficou no momento em que o comportamento das closures dos objecto é alterado. Pois no trecho:

classe1.closure = closure

classe2.closure = classe1.closure

a propriedade "closure" não foi definida na criação da classe, então o que deveria ocorrer? Um erro por não existir a propriedade que estamos tentando acessar ou esta nova propriedade será criada em tempo de execução?
Tags: Closure


0
Coloque esse exemplo em teste no Groovy Console e como eu esperava ocorreu: groovy.lang.MissingPropertyException

Porém em groovy é possivel mudar um objecto em tempo de execução? Como?
17/07/2014 07:22


1
Augusto,

Para adicionar em tempo de execução, deveria fazer

classe1.metaClass.closure = closure



Ainda não faz parte da comunidade???

Para se registrar, clique aqui.


Aprenda Groovy e Grails com a Formação itexto!

Newsletter Semana Groovy

Assinar

Envie seu link!


Livro de Grails


/dev/All

Os melhores blogs de TI (e em português) em um único lugar!

 
Creative Commons
RSS Grails Brasil é mantido por itexto Consultoria.
Em caso de problemas contacte Henrique Lobo Weissmann (Kico) por e-mail: kico@itexto.com.br
Todo o conteúdo presente neste site adota o Creative Commons como licença padrão.
Ver: 4.14.0
itexto