倭マン's BLOG

くだらない日々の日記書いてます。 たまにプログラミング関連の記事書いてます。 書いてます。

MetaClass の階層構造

Groovy の MetaClass インターフェースに関連する型の階層構造。 型名が「MetaClass」で終わるインターフェース・クラスを抜き出して、実装・継承関係を図示してみました。 実装・継承関係は groovy 2.0.0-beta-1 をもとに描いてます。 現在の最新安定版 1.8.4 とは少し継承関係が違うところがあるので注意*1

  • はインターフェースを、オレンジはクラスを表してます。
  • パッケージが描かれていないものは全て groovy.lang パッケージ内に定義されています。
  • GroovyObject インターフェースと MetaObjectProtocol インターフェースは型名が「MetaClass」で終わってませんが入れてます。
  • MetaClassImpl インターフェースと DelegatingMetaClass インターフェースは MutableMetaClass インターフェースだけでなく MetaClass インターフェースを直接実装してますが、上図ではこの関係を省略してます。
  • HandleMetaClass は正確には org.codehaus.groovy.runtime パッケージに含まれてます。

各型がどんなメソッドなどを持っていて、どういう風に使うのかを見ていきたいところですが、只今勉強中。

プログラミングGROOVY

プログラミングGROOVY


Groovyイン・アクション

Groovyイン・アクション

*1:groovy 1.8.4 (の API ドキュメント)では ProxyMetaClass が AdaptingMetaClass を実装していないのと、OwnedMetaClass が HandleMetaClass を継承しているのが違いました。