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 件のコメント:
コメントを投稿