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

5
考虑以下代码片段 -
println String.class

输出结果为 -
class java.lang.String

我原本期望的是String的某个子类,因为它包含了许多不属于Java类的成员。例如 -
println String.methods.size()

methods不是Java类的成员。

这个魔法是如何实现的呢?

1个回答

7
Groovy有一个元类注册表。当您在类上调用方法时,将检查注册表以查看该类实例是否存在metaClass扩展方法。
从标准文档中 -
每个Groovy对象都有一个metaClass,用于管理语言的动态性。该类拦截对Groovy对象的调用,以确保可以添加适当的Grooviness。Source

Tim:我想我应该问你上面关于链接的问题 - 那是你的答案。 - R71
他们似乎已经删除了2007年之前的所有内容。 - tim_yates

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接