Groovy脚本和Groovy类反编译文件

Groovy类

package preload_groovy

class GroovyKlass {
    static void main(String[] args) {
        println "Hello"
    }
}
package preload_groovy;

import org.codehaus.groovy.reflection.*;
import groovy.lang.*;
import java.lang.ref.*;
import org.codehaus.groovy.runtime.*;
import org.codehaus.groovy.runtime.callsite.*;

public class GroovyKlass implements GroovyObject
{
    private static /* synthetic */ ClassInfo $staticClassInfo;
    private transient /* synthetic */ MetaClass metaClass;
    private static /* synthetic */ SoftReference $callSiteArray;
    
    public GroovyKlass() {
        $getCallSiteArray();
        this.metaClass = this.$getStaticMetaClass();
    }
    
    public static void main(final String... args) {
        $getCallSiteArray()[0].callStatic((Class)GroovyKlass.class, (Object)"Hello");
    }
    
    protected /* synthetic */ MetaClass $getStaticMetaClass() {
        if (this.getClass() != GroovyKlass.class) {
            return ScriptBytecodeAdapter.initMetaClass((Object)this);
        }
        ClassInfo $staticClassInfo = GroovyKlass.$staticClassInfo;
        if ($staticClassInfo == null) {
            $staticClassInfo = (GroovyKlass.$staticClassInfo = ClassInfo.getClassInfo((Class)this.getClass()));
        }
        return $staticClassInfo.getMetaClass();
    }
    
    private static /* synthetic */ CallSiteArray $createCallSiteArray() {
        final String[] array = { null };
        $createCallSiteArray_1(array);
        return new CallSiteArray((Class)GroovyKlass.class, array);
    }
    
    private static /* synthetic */ CallSite[] $getCallSiteArray() {
        CallSiteArray $createCallSiteArray;
        if (GroovyKlass.$callSiteArray == null || ($createCallSiteArray = GroovyKlass.$callSiteArray.get()) == null) {
            $createCallSiteArray = $createCallSiteArray();
            GroovyKlass.$callSiteArray = new SoftReference($createCallSiteArray);
        }
        return $createCallSiteArray.array;
    }
}

Groovy脚本

package preload_groovy

println 'Hello'

package preload_groovy;

import org.codehaus.groovy.reflection.*;
import java.lang.ref.*;
import groovy.lang.*;
import org.codehaus.groovy.runtime.*;
import org.codehaus.groovy.runtime.callsite.*;

public class GroovyScript extends Script
{
    private static /* synthetic */ SoftReference $callSiteArray;
    
    public GroovyScript() {
        $getCallSiteArray();
    }
    
    public GroovyScript(final Binding context) {
        $getCallSiteArray();
        super(context);
    }
    
    public static void main(final String... args) {
        $getCallSiteArray()[0].call((Object)InvokerHelper.class, (Object)GroovyScript.class, (Object)args);
    }
    
    public Object run() {
        return $getCallSiteArray()[1].callCurrent((GroovyObject)this, (Object)"Hello");
    }
    
    private static /* synthetic */ CallSiteArray $createCallSiteArray() {
        final String[] array = new String[2];
        $createCallSiteArray_1(array);
        return new CallSiteArray((Class)GroovyScript.class, array);
    }
    
    private static /* synthetic */ CallSite[] $getCallSiteArray() {
        CallSiteArray $createCallSiteArray;
        if (GroovyScript.$callSiteArray == null || ($createCallSiteArray = GroovyScript.$callSiteArray.get()) == null) {
            $createCallSiteArray = $createCallSiteArray();
            GroovyScript.$callSiteArray = new SoftReference($createCallSiteArray);
        }
        return $createCallSiteArray.array;
    }
}

原文地址:https://www.cnblogs.com/jsersudo/p/14214761.html