Groovy 所有子类中方法的默认行为

Groovy 所有子类中方法的默认行为,groovy,Groovy,在我的(静态编译的)Groovy应用程序中,我构建了一个树状数据结构。该树仅由共享同一基类的子类的实例构建。我定期调用根节点的update()方法,该方法调用其所有子节点的update(),以此类推,直至树的每个叶 假设我有一个TreeNode基类和一堆子类,ChildNode1,ChildNode2,ChildNode3。树是从那些ChildNode类构建的,每个类可以在树中出现多次(但作为不同的实例) 现在,我需要测量每个update()方法在每个ChildNode类上累积的总时间 我不想在

在我的(静态编译的)Groovy应用程序中,我构建了一个树状数据结构。该树仅由共享同一基类的子类的实例构建。我定期调用根节点的
update()
方法,该方法调用其所有子节点的
update()
,以此类推,直至树的每个叶

假设我有一个
TreeNode
基类和一堆子类,
ChildNode1
ChildNode2
ChildNode3
。树是从那些
ChildNode
类构建的,每个类可以在树中出现多次(但作为不同的实例)

现在,我需要测量每个
update()
方法在每个
ChildNode
类上累积的总时间

我不想在每个
update()
方法的开头和结尾直接测量时间,因为我正在编写一个库,其他开发人员可能会基于
TreeNode
添加更多节点类。我不想强迫他们自己测量时间


我希望我想要实现的目标是明确的。在(静态)Groovy中是否有某种类似于Python中的装饰的方式?

因此,您希望能够拦截当前和将来每个类的每个更新调用?甚至在递归调用之外(树调用为每个子级更新,而子级决定自己更新)?您是否考虑过一种体系结构方法,比如调用抽象私有更新方法的最终更新方法?有一个ProxyMetaClass,它允许您设置一个拦截器(例如BenchmarkInterceptor)。但是这需要了解这个类的知识。根据我在Groovy邮件列表上得到的反馈,我可能会选择traits…要不要在这里添加一些链接?