与java的继承相比,Groovy的扩展模块

6 java groovy gdk extension-modules

groovy的扩展模块是java的继承功能的混合形式吗?为什么扩展模块需要声明为静态?

bla*_*rag 0

简短的回答是我认为是的。回答清楚有点困难,因为扩展方法的继承完全由运行时(和静态编译器)完成。因此,它与 Java 如何进行继承无关。

回答第二个问题...它们是静态的,因为对于需要状态的情况,您通常使用元类。扩展方法最初被认为是方便方法或使 API 更加 Groovy。因此,它们是添加到元类中的一种特殊形式的方法。您可以将它们视为简化版本。但这也意味着他们不具备所有的能力。实现扩展方法,可以在每个“自身”对象的基础上保持本地状态(基本上是字段/属性会做什么)实际上很难做到有效......但您始终可以为此使用每个实例元类。