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