考虑以下片段 -
println String.class
输出是 -
class java.lang.String
我期待 String 的某个子类,因为它包含许多不属于 Java 类的成员。例如 -
println String.methods.size()
methods
不是 Java 类的成员。
这种魔法是如何发生的?
考虑以下片段 -
println String.class
输出是 -
class java.lang.String
我期待 String 的某个子类,因为它包含许多不属于 Java 类的成员。例如 -
println String.methods.size()
methods
不是 Java 类的成员。
这种魔法是如何发生的?
Groovy 有一个元类注册表。当您在类上调用方法时,会检查注册表以查看该类实例是否存在元类扩展方法。
从标准文档 -
每个 groovy 对象都有一个元类,用于管理语言的动态特性。此类拦截对 groovy 对象的调用,以确保可以添加适当的 grooviness。资源