Sea*_*oyd 37
Java中没有Meta-Class.您可能正在考虑Groovy的MetaClass:
Groovy中的MetaClass定义了任何给定Groovy或Java类的行为.MetaClass接口定义了两个部分.客户端API,通过扩展MetaObjectProtocol接口和与Groovy运行时系统的契约定义.通常,编译器和Groovy运行时引擎与此类上的方法交互,而MetaClass客户端与MetaObjectProtocol接口定义的方法交互
Groovy MetaClass允许您在运行时将行为和状态分配给Classes,而无需编辑原始源代码,它是原始类之上的一层.
这是Groovy用于扩展Java JDK对象的机制.
例:
Object.class.metaClass.explode{-> println "Boom! ${delegate} Exploded!"}
"SomeString".explode();
12345.explode();
Run Code Online (Sandbox Code Playgroud)
输出:
繁荣!SomeString爆炸了!
繁荣!12345爆炸了!
有关更高级的用法,请阅读:MetaClasses
来自维基百科
在面向对象的编程中,元类是一个类,其实例是类.正如普通类定义某些对象的行为一样,元类定义了某些类及其实例的行为.并非所有面向对象的编程语言都支持元类.在这些中,元类可以覆盖任何给定方面的类行为的程度各不相同.每种语言都有自己的元对象协议,这是一组管理对象,类和元类如何交互的规则.
和
支持语言和工具
以下是一些支持元类的最着名的编程语言.Common Lisp,通过CLOS Groovy Objective-C Python Perl,通过元类pragma,以及Moose Ruby Smalltalk一些不太流行的支持元类的语言包括OpenJava,OpenC++,OpenAda,CorbaScript,ObjVLisp,Object-Z,MODEL-K,XOTcl和MELDC.
| 归档时间: |
|
| 查看次数: |
11334 次 |
| 最近记录: |