groovy如何为Java类添加新方法?

时间:2013-07-30 12:19:11

标签: groovy

请考虑以下代码段 -

println String.class

输出是 -

class java.lang.String

我期待String的一些子类,因为它包含许多不属于Java类的成员。例如 -

println String.methods.size()

methods不是Java类的成员。

这种魔力是如何发生的?

1 个答案:

答案 0 :(得分:6)

Groovy有一个元类注册表。当您在类上调用方法时,将检查注册表以查看该类实例是否存在metaClass扩展方法。

从标准文档 -

  

每个groovy对象都有一个metaClass,用于管理动态   语言的本质。该类拦截对groovy对象的调用   确保可以添加适当的grooviness。 Source