Uso de Groovy 1.8. Intento crear una definición de clase dinámica que almacene las propiedades por objeto. Utilicé propertyMissing
sin agregar la propiedad al objeto muy bien. Solo creo que el almacenamiento en caché de las propiedades sería más eficiente. ¿Derecha?Propiedad dinámica Groovy por objeto
Tenga en cuenta que cada instancia debe tener sus propias propiedades diferentes.
El código siguiente funciona bien:
class C {}
def c = new C()
c.metaClass.prop = "a C property"
println c.prop
def x = new C()
x.prop
la Salida:
a C property
groovy.lang.MissingPropertyException: No such property: prop for class: C
Si necesito a esta problemática:
class A {
def propertyMissing(String name) {
if(!this.hasProperty(name)) {
println "create new propery $name"
this.metaClass."$name" = "Dyna prop $name"
println "created new propery $name"
}
this.metaClass."$name"
}
}
a = new A()
println a.p1
Para A
, que llegar lo más lejos " crear nueva propiedad ", pero la línea this.metaClass."$name" = "Dyna prop $name"
falla con: No such property: p1 for class at line 5
¿Cuál es el problema?
Aha .. Solo puedes hacer eso en tiempo de compilación ... muy mal. – Ayman
Puede usar Runtime mixin para el tiempo de ejecución – Manny
Reparar el enlace roto de "blogpost": http: // blog.enfranchisedmind.com/2008/06/groovy-metaclass-bug/ –