7

私は Groovy プログラミング言語を初めて使用し、Groovy の動的な性質と機能を完全に理解しようとしています。私が知っていることは、Groovy で作成された最も基本的な形式のすべてのクラスは次のように見えるということです (GroovyObject を実装し、Java Object を拡張します)。

public class Foo implements groovy.lang.GroovyObject extends java.lang.Object { }

Groovy オブジェクトには、MetaObjectProtocolを拡張するMetaClassも含まれています。Groovy の動的機能の一部を提供するのは、このクラス階層です。これには、それ自体を内省する機能 (getProperties、getMethods) またはメソッドをインターセプトする機能 (invokeMethod、missingMethod) が含まれます。

また、Groovy で利用できるさまざまな種類のメタ プログラミングについても理解しています。これらにより、実行時またはコンパイル時に機能を追加またはオーバーライドできます。

  • ランタイム
    • カテゴリー
    • Expando / MetaClass / ExpandoMetaClass
  • コンパイル時間
    • AST 変換
    • 拡張モジュール

これで、この質問の要点にたどり着くことができます。誰かまたは本が Groovy の「メタオブジェクト プロトコル」を参照する場合、特定のクラスまたはもののコレクションについて話していることになります。定義されていない、または決まっていないものを理解するのに苦労します。私の本の1つはそれを次のように定義しました

プロトコルは、ルールとフォーマットの集まりです。Meta-Object-Protocol (MOP) は、メソッド呼び出しの要求が Groovy ランタイム システムによってどのように処理されるか、および中間層をどのように制御するかについての規則の集まりです。プロトコルの「形式」は、それぞれの API によって定義されます。

私は Venkat の Programming Groovy 2 という本も持っており、その中にはこのメソッド検索プロセスを定義する図があります。したがって、これがメソッドをリクエストする方法のルールであると推測しています(少なくともPOGO、POJOは異なることを理解しています)。

ここに画像の説明を入力

とにかく、私は正しい道を進んでいると思いますが、まだ「あはは」の瞬間を逃しているように感じます. 私が欠けているものについて誰かが私に記入してもらえますか? または、少なくとも、ここでのとりとめのない話が何らかの意味を成したことを教えてください:)ありがとう!!

4

1 に答える 1

5

これが答えです。「Meta-Object-Protocol (MOP) は、メソッド呼び出しの要求が Groovy ランタイム システムによってどのように処理され、中間層をどのように制御するかについての規則の集まりです。」メソッド呼び出しが通過するプロセスとそれに付随する API を理解すれば、すべて理解できると思います。私はそれをすべて考えすぎていました。ありがとう!!

于 2013-10-30T01:29:00.043 に答える