사용자 도구

사이트 도구


groovy:meta_programming

문서의 이전 판입니다!


Groovy Meta Programming

GroovyInterceptable

  • Groovy 객체가 GroovyInterceptable을 구현하고 있다면 모든 메소드 호출시 메소드의 존재 여부와 상관없이 항상 invokeMethod가 호출된다. Groovy 코드를 직접 작성할 때 사용가능.
  • GroovyInterceptable을 구현하지 않고 invokeMethod만 구현했다면,
    • 존재하지 않는 메소드에 대해서만 invokeMethod 호출
    • 존재하지 않는 메소드 호출시 invokeMethod 없으면 missingMethod 호출
  • 객체 MetaClassinvokeMethod 구현하면 메소드의 존재 여부와 상관없이 항상 invokeMethod 호출

MetaClass Interception

  • Java class나 직접 작성하지 않고 의존하는 외부 Groovy class 등에 대한 interception 가능.
  • 메소드 존재 여부와 상관없이 항상 호출됨.
YourClass.metaClass.invokeMethod = { String methodName, methodArgs ->
  //구현
  // 객체 자신을 가리킬 때는 delegate 를 사용한다. closure 이기 때문.
  // 존재하지 않는 메소드 호출을 metaClass.invokeMissingMethod() 에 위임시킬 수 있다.
}
groovy/meta_programming.1472362573.txt.gz · 마지막으로 수정됨: 2016/08/28 14:06 저자 kwon37xi