2

(これは一般化された例です)

任意のオブジェクトで呼び出すことができるユーティリティ メソッドを作成したいのですが、次のような署名があります。

class StringMetaData {
    Object value
    String meta
}

Object.metaClass.withStringMetaData = { meta ->
   new StringMetaData(delegate, meta)
}

私のプログラムのどこでも、次のようなことができるという考えで:

def foo = 1.withStringMetaData("bar")

foo.valueこれで、値またはfoo.meta添付された文字列を取得できます。

ローカル コンテキスト内では、オブジェクトでこのメタ メソッドを定義できますが、アプリケーション内でグローバルに使用できるようにしたいのですが、このメタメソッドをどこでも使用できるようにする正しい方法は何ですか?

4

1 に答える 1

4

おそらく、Groovy拡張モジュールが役立つかもしれません。自分で試したことはありませんが、ドキュメントには、JDKクラスにカスタムメソッドを追加できると記載されています。

于 2013-01-11T07:17:29.063 に答える