Groovy 사용 1.8. 개체 당 속성을 캐시 할 동적 클래스 정의를 만들려고합니다. 객체에 속성을 추가하지 않고 propertyMissing
을 사용했습니다. 속성을 캐싱하는 것이 더 효율적이라고 생각합니다. 권리?객체 당 Groovy 동적 속성
각 인스턴스마다 고유 한 속성이 있어야합니다.
아래 코드는 잘 작동 :
class C {}
def c = new C()
c.metaClass.prop = "a C property"
println c.prop
def x = new C()
x.prop
출력됩니다 :
a C property
groovy.lang.MissingPropertyException: No such property: prop for class: C
나는이시키는 문제에해야하는 경우 :
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
이 A
를 들어, 내가 "으로까지 얻을 새 속성 만들기 ", this.metaClass."$name" = "Dyna prop $name"
줄은 다음과 같이 실패합니다 : No such property: p1 for class at line 5
뭐가 잘못 되었나요?
아하 .. 컴파일 할 때만 그렇게 할 수 있습니다. 너무 나 빠졌습니다. – Ayman
런타임에 런타임 믹스를 사용할 수 있습니다. – Manny
"blogpost"링크 끊김 수정 : http : // blog.enfranchisedmind.com/2008/06/groovy-metaclass-bug/ –