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;
}
}