每一个scala object 相当于 java代码中的 同名静态类$下的一个静态对象
例如下面的TestScala object
package com.atguigu.chapter01
//只要以后看到有 object TestScala ,你应该有这样一个认识
//1. object TestScala 对应的是一个 TestScala$的一个静态对象 MODULE$
//2. 在我们的程序中,是一个单例
object TestScala {
def main(args: Array[String]): Unit = {
println("hello,scala, idea...")
var num1: Int = 10
var num2: Int = 20
println(num1 + num2)
println("名字\t年龄\t邮件\t性别")
}
}
反编译之后大概是这样的
TestScala object 会被包装成一个TestScala
.
M
O
D
U
L
E
.MODULE
.MODULE 静态对象
package com.atguigu.chapter01.test;
//我们可以理解scala 在运行时,做了一个包装.
public class TestScala {
public static void main(String[] paramArrayOfString) {
//TestScala..MODULE$.main(paramArrayOfString);
TestScala$.MODULE$.main(paramArrayOfString);
}
}
final class TestScala$
{
public static final TestScala$ MODULE$;
static
{
MODULE$ = new TestScala$();
}
public void main(String[] args)
{
System.out.println("hello,scala, idea...");
}
//private TestScala$() { MODULE$ = this; }
}