2.5 通过反编译了解 Scala 的执行流程

我们刚才创建的Hello.scala会被编译成两个class:

package com.atguigu.day01;

import scala.reflect.ScalaSignature;
/*
1. object 在底层会生成两个类 Hello , Hello$
2. Hello 中有个main函数,调用 Hello$ 类的一个静态对象 MODULES$

*/
public final class Hello
{
    public static void main(String[] paramArrayOfString)
    {
        Hello..MODULE$.main(paramArrayOfString);
    }
}
package com.atguigu.day01;

import scala.Predef.;

public final class Hello$
{
    //3. Hello$.MODULE$. 对象是静态的,通过该对象调用Hello$的main函数

    public static final  MODULE$;

    static
    {
        new ();
    }
    // 4.可以理解我们在main中写的代码在放在Hello$的main,在底层执行scala编译器做了一个包装

    public void main(String[] args)
    {
        Predef..MODULE$.println("hello scala");
    }

    private Hello$()
    {
        MODULE$ = this;
    }
}
Copyright © 尚硅谷大数据 2019 all right reserved,powered by Gitbook
该文件最后修订时间: 2018-12-06 23:25:45

results matching ""

    No results matching ""