我想拦截脚本及其任何子类型的所有方法调用,最好使用MetaClasses,但如果需要,我可以从Groovy中完成 . 我基本上想做这样的事情:

MetaClassImpl meta = new MetaClassImpl(Script.class) {
    @Override
    public final Object invokeMethod(Object obj, String method, Object[] args) {
        if(method.equals("evaluate")) {
            System.out.println("intercepted");
            return run(shell, (String) args[0], "Evaluate");
        } else {
            return super.invokeMethod(obj, method, args);
        }
    }
};

如果我将它应用于我创建的每个脚本实例,但上面的工作正常,但我想将它应用于Script类并使其适用于它的所有子类型 . 有没有办法做到这一点?

编辑:我正在尝试做的是用所有Script及其子类型的实例替换另一种方法 . 或者得到评估以尊重脚本在其中运行的groovy shell上设置的ImportCustomizer .