2011年10月16日日曜日

GroovyClassLoader凄いす

GroovyのGroovyClassLoaderが凄いので、ちょっとメモ


大したことのないエントリです。
Groovyって、まあ動的言語なわけですが、
さて、どうしたら動的にクラスとかを作り出せるのか、
はて?とおもっていました。

で、やっと見つけたのが、
GroovyClassLoader
です。

使い方はこんな感じ。

def loader = new GroovyClassLoader(this.getClass().getClassLoader())
def textClass = loader.parseClass(
$/
class DynamicPerson {
    def age
    boolean isAdult() {this.age >= 20}
}
/$
)
def dPerson = textClass.newInstance()
dPerson.age = 20
assert dPerson.isAdult() == true


文字列をClassとして読み込んでしまう、おそろしい機能ですね。

ちなみに、読み込むクラスは文字列なので、
当然のことながらコンパイルによる型チェックとかはしてくれません。
(IntelliJ IDEAでは試していませんが…)

ですが、まあ、Webアプリのプロトタイプを作るときなどは、
こういう機能があると、非常に助かる。

ちょっとしたエンベデッドなWebサーバーを作って、
Ajaxの適当なレスポンスを返すときには非常に便利ですね。

まあ、こんなのを書いていると、ぬこには怒られそうだけど…


0 件のコメント:

コメントを投稿