Groovyプログラミング言語が新しく、動的な性質と機能を完全に理解しようとしています。私が知っていることは、Groovyで最も基本的なフォームで作成されたすべてのクラスは、GroovyObjectを実装してjavaオブジェクトを拡張しているように見えるということです。GroovyのMetaobject Protocol(MOP)
public class Foo implements groovy.lang.GroovyObject extends java.lang.Object { }
グルービーオブジェクトもMetaObjectProtocolを拡張MetaClass含ま。 Groovyの動的機能のいくつかを提供するのはこのクラス階層です。これには、自身をイントロスペクションする(getProperties、getMethods)またはインターセプトするメソッド(invokeMethod、missingMethod)が含まれます。
また、Groovyで利用できるさまざまなタイプのメタプログラミングについても理解しています。これにより、実行時またはコンパイル時に機能を追加または上書きすることができます。
- ランタイム
- カテゴリー
- はExpando /メタクラス/ ExpandoMetaClass
- コンパイル時
- AST変換
- Extensionモジュール
ここでは、この質問の肉体に到達できない方法があります。ある人や本がGroovyの "Metaobject Protocol"を参照しているときは、特定のクラスや物事の集合について話しています。私は、定義されていないか、または石で設定されているものを掴むのに苦労します。私の本の1つは、
と定義されています。プロトコルはルールとフォーマットの集合です。 MOP(Meta-Object-Protocol)は、メソッドコールのリクエスト がGroovyランタイムシステムによってどのように処理され、中間層を制御するかについての規則の集合です。プロトコルの「フォーマット」は、それぞれのAPIで定義された ある
私もヴェンカトのプログラミングGroovyの2本を持っており、それには、このメソッド・ルックアップ・プロセスを定義する図が示されています。だから私はこれが(少なくともPOGO、私はPOJOが違うと理解している)メソッドを要求する方法のルールだと推測しています。
「コンパイル時」のメタ情報に拡張機能を追加する必要があります – Will
拡張モジュールについて知りませんでした。リストに追加しました。ありがとうございました! – cfaddict
私はここで何を答えなければならないのか分かりません。あなたの質問はMOPとは何ですか?同様に、Groovyソースコードのどのクラスがそれを実装していますか? – Will