class – Scala中的主要方法
发布时间:2020-12-16 09:29:21 所属栏目:安全 来源:网络整理
导读:我写了一个Scala类并在其中定义了main()方法。它编译了,但是当我运行它时,我得到了NoSuchMethodError:main。在我看到的所有scala示例中,main方法是在一个对象中定义的。在Java中,我们在类中定义main方法。是否可以在Scala类中定义main()或者我们是否总
我写了一个Scala类并在其中定义了main()方法。它编译了,但是当我运行它时,我得到了NoSuchMethodError:main。在我看到的所有scala示例中,main方法是在一个对象中定义的。在Java中,我们在类中定义main方法。是否可以在Scala类中定义main()或者我们是否总是需要一个对象?
解决方法
要回答您的问题,请查看以下内容:
我做了一个scala类,编译和反编译它,我得到的是有趣的。 class MyScalaClass{ def main(args: Array[String]): Unit = { println("Hello from main of class") }enter code here } Compiled from "MyScalaClass.scala" public class MyScalaClass { public void main(java.lang.String[]); public MyScalaClass(); } 因此,这意味着当scala类转换为java类时,scala类的main方法(而不是转换为java类中的main方法)不是静态的。 但是如果使用’object’关键字完成相同的代码,那么: Compiling the following: object MyScalaClass{ def main(args: Array[String]): Unit = { println("Hello from main of object") } } Decompiling the following: javap MyScalaClass$.class Compiled from "MyScalaClass.scala" public final class MyScalaClass$ { public static final MyScalaClass$ MODULE$; public static {}; public void main(java.lang.String[]); } Decompiling the following javap MyScalaClass.class Compiled from "MyScalaClass.scala" public final class MyScalaClass { public static void main(java.lang.String[]); } 所以这里我们在MyScalaClass.class中得到了public static void main,因此main方法可以直接由JVM在这里执行。 我希望你得到你的答案。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |