2010年4月21日水曜日

Groovyでデコンパイル

groovyをデコンパイルしてgroovyの実装を確認してみる。
package ph.jpn.calm.sample.groovy;

class Book {
private String title

}



非常に簡単なクラスをデコンパイルすると以下のようなコードになる。
コンストラクタにメタクラスが存在する。このメタクラスを使っている
ことにより、スクリプトような動作を実現しているという。
時間があればもっと調べてみます。


package ph.jpn.calm.sample.groovy;

import groovy.lang.GroovyObject;
import groovy.lang.MetaClass;
import org.codehaus.groovy.runtime.ScriptBytecodeAdapter;
import org.codehaus.groovy.runtime.callsite.CallSite;

public class Book
implements GroovyObject
{
private String title;

public Book()
{
Book this;
CallSite[] arrayOfCallSite = $getCallSiteArray();
MetaClass tmp12_9 = $getStaticMetaClass();
this.metaClass = ((MetaClass)ScriptBytecodeAdapter.castToType(tmp12_9, $get$$class$groovy$lang$MetaClass()));
tmp12_9;
while (true)
return;
}

static
{
tmp10_7 = new Long(0L);
__timeStamp__239_neverHappen1271781713015 = (Long)tmp10_7;
tmp10_7;
tmp28_25 = new Long(1271781713015L);
__timeStamp = (Long)tmp28_25;
tmp28_25;
return;
while (true)
return;
}
}

0 件のコメント:

コメントを投稿