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

最佳答案

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

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

10-06 05:31
查看更多