我正在编写一个 DelegatingMetaClass,我想将其应用于我项目中的所有 groovy 类,但我不知道如何获取项目中的所有类?
代码如下:
/*
This will work ok, since I know Foo beforehand, but what about classes
that do not exist yet?
*/
def myMetaClass = new DelegatingMetaClass(Foo.class)
InvokerHelper.metaRegistry.setMetaClass(Foo.class, myMetaClass)
/*
how to do this?
allGroovyClasses.each{
def myMetaClass = new DelegatingMetaClass(it)
InvokerHelper.metaRegistry.setMetaClass(it, myMetaClass)
}
*/
class SimpleInterceptor extends DelegatingMetaClass{
public SimpleInterceptor(final Class aclass) {
super(aclass);
initialize();
}
public Object getProperty(Object object, String prop) {
println ("I am in a property interceptor!!!")
return super.getProperty(object, prop)
}
public Object invokeMethod(Object a_object, String a_methodName, Object[] a_arguments)
{
println ("I am in a method interceptor!!!")
return super.invokeMethod(a_object, a_methodName, a_arguments)
}
最佳答案
有一个 example of how to do this in java ,它也应该与 groovy 一起工作。不过,我认为这是一种粗略的方法。
是否需要拦截域类中的 getter/setter? Hibernate has support for that (我也假设 GORM)。
您需要拦截 Controller 操作吗?您可以使用 controller interceptors .
你的目标是什么?
关于java - 如何在 groovy 中列出 JVM 中的所有(groovy)类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2715013/