7

我是 Groovy 编程语言的新手,我正在尝试完全理解它的动态特性和功能。我所知道的是,在 Groovy 中以最基本的形式创建的每个类看起来都是这样的(实现 GroovyObject 并扩展 java Object)。

public class Foo implements groovy.lang.GroovyObject extends java.lang.Object { }

Groovy 对象还包含一个扩展MetaObjectProtocol的MetaClass。正是这个类层次结构提供了一些 Groovy 的动态功能。这包括自省(getProperties、getMethods)或拦截方法(invokeMethod、missingMethod)的能力。

我也了解 Groovy 中可用的不同类型的元编程。这些使您能够在运行时或编译时添加或覆盖功能。

  • 运行
    • 类别
    • Expando / MetaClass / ExpandoMetaClass
  • 编译时间
    • AST 转换
    • 扩展模块

现在,我们可以解决这个问题的实质。当某人或一本书提到 Groovy 中的“元对象协议”时,我们是在谈论特定的类或事物的集合。我很难掌握没有定义或一成不变的东西。我的一本书将其定义为

协议是规则和格式的集合。元对象协议 (MOP) 是 Groovy 运行时系统如何处理方法调用请求以及如何控制中间层的规则集合。协议的“格式”由各自的 API 定义,

我也有 Venkat 的 Programming Groovy 2 书,其中有一个定义此方法查找过程的图表。所以我猜这是我们如何请求方法的规则(至少是 POGO,我理解 POJO 是不同的)。

在此处输入图像描述

无论如何,我认为我正在走正确的道路,但我觉得我仍然想念那个“啊哈”的时刻。任何人都可以填写我所缺少的内容吗?或者至少告诉我我在这里的胡言乱语是有道理的:)谢谢!

4

1 回答 1

5

这就是答案。“元对象协议 (MOP) 是 Groovy 运行时系统如何处理方法调用请求以及如何控制中间层的规则集合。” 一旦你了解了方法调用的过程以及随之而来的 API,我认为这一切都是有道理的。我只是在想这一切。谢谢!!

于 2013-10-30T01:29:00.043 回答