首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Groovy的MetaClass是用来做什么的?

Groovy的MetaClass是用来做什么的?
EN

Stack Overflow用户
提问于 2011-03-17 22:10:30
回答 2查看 13.4K关注 0票数 25

元类在Groovy和其他面向对象编程语言中的用途是什么?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-03-17 22:13:35

您可能正在考虑Groovy's MetaClass

Groovy中的MetaClass定义了任何给定的

或MetaClass类的行为。MetaClass接口定义了两个部分。客户端API,它是通过扩展MetaObjectProtocol接口和与Groovy运行时系统的契约定义的。通常,编译器和Groovy运行时引擎与此类上的方法交互,而MetaClass客户端与MetaObjectProtocol接口定义的方法交互

Groovy允许您在运行时为类分配行为和状态,而无需编辑原始源代码,它是在原始MetaClass之上的一层。

这是Groovy用于extend the Java JDK objects的机制。

示例:

代码语言:javascript
复制
Object.class.metaClass.explode{-> println "Boom! ${delegate} Exploded!"}
"SomeString".explode();
12345.explode();

输出:

Boom!SomeString爆炸了!

砰!12345爆炸了!

有关更高级的用法,请阅读以下内容:MetaClasses

票数 44
EN

Stack Overflow用户

发布于 2011-03-17 22:13:11

来自Wikipedia

在面向对象编程中,元类是实例是类的类。就像普通类定义某些对象的行为一样,元类定义某些类及其实例的行为。并非所有面向对象的编程语言都支持元类。在这些类中,元类可以覆盖类行为的任何给定方面的程度各不相同。每种语言都有自己的元对象协议,这是一组控制对象、类和元类如何交互的规则。

语言和工具中的

支持

下面是一些支持元类的最重要的编程语言。Common Lisp,通过CLOS Groovy Objective-C Python Perl,通过元类杂注,以及Moose Ruby Smalltalk一些不太流行的支持元类的语言,包括OpenJava、OpenC++、OpenAda、CorbaScript、ObjVLisp、Object-Z、MODEL-K、XOTcl和MELDC.

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

https://stackoverflow.com/questions/5340189

复制
相关文章

相似问题

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