Grails - 全球可用的制作方法和元类编程

时间:2011-06-23 12:29:18

标签: grails groovy metaprogramming metaclass

我将此行插入我的BootStrap类的init()

Integer.metaClass.minutes = { 60000L * delegate }

然后我无法在Job类(Quartz插件)中使用它。我是否将这行代码放在其他地方以使其成为全局修改?

我也想知道在Grails的所有类中使用函数的最佳方法。 像一个全球功能。是扩展Object元类吗?还是有更好的方法?

1 个答案:

答案 0 :(得分:1)

  

我是否将这行代码放在其他地方以使其成为全局修改?

使用DelegatingMetaClass

  

我也想知道在Grails的所有类中使用函数的最佳方法。像一个全球功能。是扩展Object元类吗?还是有更好的方法?

如果希望函数成为所有类的实例方法,则必须将其添加到Object的metaClass中(参见上文)。如果没有,只需将该函数添加为类的静态方法,即使用Java全局访问函数的方式相同。