Scala-反编译
Posted 大数据技术AI
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Scala-反编译相关的知识,希望对你有一定的参考价值。
Scala 程序基本结构
/**
* Author z
* Date 2021-01-24 15:32:42
*/
object Scala_01_Hello {
//程序入口
def main(args: Array[String]): Unit = {
println("hello world")
}
}
static
void
Scala 程序反编译
object在底层会生成两个类 Scala_01_Hello, Scala_01_Hello$
Scala_01_Hello中有个main函数,调用 Scala_01_Hello$ 类的一个静态对象 MODULES$
Scala_01_Hello$.MODULE$. 对象时静态的,通过该对象调用Scala_01_Hello$的main函数
我们在main中写的代码在放在Scala_01_Hello$的main,在底层执行Scala编译器做了一个包装
Scala_01_Hello源码:
object Scala_01_Hello {
def main(args: Array[String]): Unit = {
println("hello world")
}
}
我们在main中写的代码在放在Scala_01_Hello$的main,在底层执行Scala编译器做了一个包装
Scala_01_Hello.class 类
public final class Scala_01_Hello
{
public static void main(String[] paramArrayOfString)
{
Scala_01_Hello..MODULE$.main(paramArrayOfString);
}
}
object在底层会生成两个类 Scala_01_Hello, Scala_01_Hello$
Scala_01_Hello中有个main函数,调用 Scala_01_Hello$ 类的一个静态对象 MODULES$
Scala_01_Hello$.class 类
public final class Scala_01_Hello$
{
public static final Scala_01_Hello$ MODULE$;
static
{
new ();
}
public void main(String[] args)
{
Predef..MODULE$.println("hello world");
}
private Scala_01_Hello$() { MODULE$ = this; }
}
Scala_01_Hello$.MODULE$. 对象时静态的,通过该对象调用Scala_01_Hello$的main函数
说明
(1)Scala中如果使用object关键字声明类,在编译时,会同时生成两个类:当前类,当前类$
(2)使用当前类$的目的在于模拟静态语法,可以通过类名直接访问方法。
(3)Scala将当前类$这个对象称之为“伴生对象”,伴随着类所产生的对象,这个对象中的方法可以直接使用。
Scala 开发注意事项
Scala源文件以“.scala" 为扩展名。
一个“.scala”文件中可以有多个类,但是一个文件中只能有一个public类
Scala程序的执行入口是object 中的main()函数。
Scala语言严格区分大小写。
Scala方法由一条条语句构成,每个语句后不需要分号(Scala语言会在每行后自动加分号)。(至简原则)
如果在同一行有多条语句,除了最后一条语句不需要分号,其它语句需要分号。
以上是关于Scala-反编译的主要内容,如果未能解决你的问题,请参考以下文章