Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Grails和Groovy元类包名称约定_Grails_Groovy_Metaclass - Fatal编程技术网

Grails和Groovy元类包名称约定

Grails和Groovy元类包名称约定,grails,groovy,metaclass,Grails,Groovy,Metaclass,我希望能够根据这里定义的约定将我的元类放在groovy.runtime.metaclass包中。对于具体类mypackage.MyClass{},我已将MyClassMetaClass放在groovy.runtime.metaclass.mypackage.中。不幸的是,MyClassMetaClass{}没有拦截对MyClass{}的调用。也许这与grails如何初始化有关 通过更改BootStrap.groovy,可以在grails项目中使用委托元类 当然,这与问题中提到的实现委托元类不同。

我希望能够根据这里定义的约定将我的元类放在groovy.runtime.metaclass包中。对于具体类
mypackage.MyClass{}
,我已将
MyClassMetaClass
放在
groovy.runtime.metaclass.mypackage.
中。不幸的是,
MyClassMetaClass{}
没有拦截对
MyClass{}
的调用。也许这与grails如何初始化有关

通过更改BootStrap.groovy,可以在grails项目中使用委托元类


当然,这与问题中提到的实现委托元类不同。

通过更改BootStrap.groovy,可以在grails项目中使用委托元类


当然,这与问题中提到的实现委托元类不同。

看起来你做得很好。发布一些代码,以便我们可以获得更多信息。我现在能想到的一件事是,如果您扩展了DelegatingMetaClass。@TiagoFarias我可以在处理普通groovy项目时让该元类工作,但在处理grails项目时却不行。看起来您做得很好。发布一些代码,以便我们可以获得更多信息。我现在能想到的一件事是,如果您扩展了DelegatingMetaClass。@TiagoFarias我可以在处理普通groovy项目时使该元类工作,但在处理grails项目时则不行。
import org.codehaus.groovy.runtime.InvokerHelper
class BootStrap {

    def init = { servletContext ->
        def myMetaClass = new MyClassMetaClass(MyClass.class)
        InvokerHelper.metaRegistry.setMetaClass(MyClass.class, myMetaClass)
    }
    def destroy = {
    }
}