首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Groovy中的元对象协议(MOP)

Groovy中的元对象协议(MOP)
EN

Stack Overflow用户
提问于 2013-10-26 14:47:54
回答 1查看 3.2K关注 0票数 8

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

代码语言:javascript
复制
public class Foo implements groovy.lang.GroovyObject extends java.lang.Object { }

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

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

  • 运行时
    • 类别
    • 扩展/ MetaClass / ExpandoMetaClass

  • 编译时间
    • AST变换
    • 扩展模块

现在,我们可以找到这个问题的要点了。当某个人或一本书提到Groovy中的"Metaobject“时,我们谈论的是一个特定的类或一组东西。我很难抓住一些没有被定义或固定在石头上的东西。我的一本书把它定义为

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

我还有Venkat的编程Groovy 2书,其中有一个图表定义了这个方法查找过程。因此,我猜想这是我们请求方法的规则(至少POGO,我知道POJO是不同的)。

无论如何,我认为我走的是正确的道路,但我觉得我仍然错过了那个“啊哈”的时刻。有人能告诉我我错过了什么吗?或者至少告诉我我在这里的胡言乱语是有道理的:“谢谢!

EN

回答 1

Stack Overflow用户

发布于 2013-10-30 01:29:00

这就是答案。元对象协议(,MOP)是Groovy运行时系统如何处理方法调用请求以及如何控制中间层的规则集合。一旦您了解了方法调用的过程,以及它附带的API,我认为这一切都是有意义的。我只是想太多了。谢谢!!

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19608035

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档