Groovy やその他の OO プログラミング言語におけるメタクラスの用途は何ですか?
ベストアンサー1
おそらくあなたはGroovy のメタクラス:
Groovy 内の MetaClass は、任意の Groovy クラスまたは Java クラスの動作を定義します。MetaClass インターフェースは 2 つの部分を定義します。クライアント API は、拡張 MetaObjectProtocol インターフェースを介して定義され、Groovy ランタイム システムとの契約です。一般に、コンパイラと Groovy ランタイム エンジンはこのクラスのメソッドと対話し、MetaClass クライアントは MetaObjectProtocol インターフェースによって定義されたメソッドと対話します。
Groovy MetaClass を使用すると、元のクラスの上のレイヤーで、元のソース コードを編集せずに実行時にクラスに動作と状態を割り当てることができます。
Groovyが使用するメカニズムはJava JDKオブジェクトを拡張する。
例:
Object.class.metaClass.explode{-> println "Boom! ${delegate} Exploded!"}
"SomeString".explode();
12345.explode();
出力:
ドカン!SomeStringが爆発した!
ドカン!12345が爆発した!
より高度な使用方法については、こちらをお読みください。メタクラス