我正在使用groovy 2.3.8方法调用groovy中的哪个序列?
我想弄清楚方法调用如何在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
。
基于改变上述例子中,我认为常规云在以下顺序找到调用哪个方法
method-in-subclass's-metaclass ?: subclass-metho ?: method-in-superclass's metaclass ?: method-in-superclass
那么,如何查找常规调用哪个方法?
这不回答这个问题以任何方式和应当我正在阅读完整的元编程文档时,我已经看到了这个图表,但是这个图表或文档没有关于类层次结构的任何内容,我在这个问题中明确提到了这个图表是关于单个类和MOP对于POGO而言,不是类层次结构类图元类和实例元类虽然在此图中未表示,但与MOP如何与分层类一起工作也不相关 –
请参阅,现在您要求的是不同的问题。最初的问题总结为:是否存在元类层次结构?现在你在问一个类的层次结构(又名继承)。你的第一个问题的答案是肯定的,它的操作在MOP图中简要描述。有没有类继承?是的,和Java一样。但是...... Groovy的方法调度包括MetaClass,Categories,Traits和Mixins。这些不是(也不打算是)在OOP单调度意义上的分层结构。我会整理一个完整的图表,但是,老实说,你一直都很不友好。 –
阅读你的评论后,我重新阅读了这个问题。不清楚。我基本上想知道如果有一个Java类层次结构,每个类都有自己的元类,方法调用是如何工作的。但显然这个问题措辞不正确。请原谅我。请编辑你的答案。不要回答这个问题,如果你不喜欢它,但至少有一个词,所以我可以删除downvote。目前我的投票被锁定。我将编辑该问题以改进其措辞。 –