什么是Groovy的MetaClass?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (198)

在Groovy和其他OO编程语言中元类的用途是什么?

提问于
用户回答回答于

在面向对象的编程中,元类是其实例是类的类。就像普通类定义某些对象的行为一样,元类定义了某些类及其实例的行为。并非所有面向对象的编程语言都支持元类。在那些做的事情中,元类可以覆盖任何给定的类行为方面的程度是变化的。每种语言都有自己的元对象协议,一组规则管理对象,类和元类如何相互作用。

用户回答回答于

Java中没有元类。你可能正在考虑Groovy的MetaClass

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

Groovy MetaClass允许在运行时为行为和状态分配行为和状态,而无需编辑原始的源代码。

这是Groovy用来扩展Java JDK对象的机制

例:

Object.class.metaClass.explode{-> println "Boom! ${delegate} Exploded!"}
"SomeString".explode();
12345.explode();

输出:

Boom! SomeString Exploded!

Boom! 12345 Exploded!

对于更高级的用法,请阅读:MetaClasses

所属标签

可能回答问题的人

  • 天使的炫翼

    17 粉丝531 提问9 回答
  • 优惠活动秘书

    0 粉丝2 提问8 回答
  • 最爱开车啦

    8 粉丝503 提问6 回答
  • 富有想象力的人

    3 粉丝0 提问5 回答

扫码关注云+社区

领取腾讯云代金券