2011-06-15 2 views
1

나는 grails 애플리케이션 atm에서 작업 중이다. 나는 클래스 작품을 호출하기 전에확장 개요 모든 인스턴스에 대한 Java 클래스

Trigger.metaClass.id = { delegate.hashCode() } 

를 추가 추상 자바 클래스 (org.quartz.Trigger)에 속성이 필요합니다. 내 응용 프로그램에서 모든 트리거에 대해이 기능을 사용하고 싶습니다. 이것이 가능한가? 아니면 재산이 필요할 때마다이 작업을 반복해야합니까?

답변

2

Trigger 개체가 인스턴스화되기 전에 metaClass에 추가하면이 추가 내용이 모두에 추가됩니다.

그러나 생성 된 후에는 Trigger의 모든 인스턴스에 추가해야합니다.

물론이 방법은 Java가 metaClass에 대해 알지 못하기 때문에 Groovy에서만 볼 수 있습니다.

행동이 보여주는 몇 가지 예를 그루비 코드 :

// Add to the metaClass of an anstract java class 
AbstractList.metaClass.woo = { 'hi there' } 

// Create an instance of a class that extends this abstract class 
ArrayList list = [ 1, 2, 3 ] 

// Call the closure in the metaClass 
println list.woo() 
+0

감사합니다 팀. 내 Grails 환경의 BootStrap.groovy에 추가하면 동적으로 생성 된 메서드와 속성이 내 전체 응용 프로그램에서 액세스 할 수 있습니다. – onigunn

관련 문제