【发布时间】:2015-12-01 01:20:05
【问题描述】:
我正在使用 groovy 2.3.8
我试图弄清楚方法调用如何在 groovy 中工作。具体来说,如果我们有一个 Java 类层次结构,每个层次结构都有一个metaClass,如下所示
class A {
}
A.metaClass.hello = {
"hello superclass"
}
class B extends A {
}
B.metaClass.hello = {
"hello subclass"
}
如果我使用new B().hello(),我会得到hello subclass。如果我删除 B 的元类,那么我会得到 hello superclass。
基于更改上面的示例,我认为 groovy 会按以下顺序查找要调用的方法
method-in-subclass's-metaclass ?: subclass-metho ?: method-in-superclass's metaclass ?: method-in-superclass
那么 groovy 是如何查找调用哪个方法的呢?
【问题讨论】:
标签: groovy metaprogramming metaclass