主要方法在Scala [英] main method in Scala
问题描述
我写了一个scala类并定义了main()方法。它编译,但是当我运行它,我得到NoSuchMethodError:main。在所有的scala示例中,我已经看到,主要方法是在一个对象中定义的。在Java中,我们在类中定义main方法。是否可以在scala类中定义main(),或者我们总是需要一个对象?
I wrote a scala class and defined the main() method in it. It compiled, but when I ran it, I got NoSuchMethodError:main. In all the scala examples, I have seen, the main method is defined in an object. In Java we define the main method in a class. Is it possible to define main() in a scala class or do we always need an object for this?
感谢
推荐答案
正如尤金在评论中说,在Scala中没有静态方法。但请注意:
As Eugene said in a comment, there are no static methods in Scala. But watch this:
$ cat Echo.scala
object Echo {
def main( args:Array[String] ):Unit = args foreach println
}
$ scalac Echo.scala
$ javap Echo\$.class
Compiled from "Echo.scala"
public final class Echo$ {
public static final Echo$ MODULE$;
public static {};
public void main(java.lang.String[]);
}
$ javap Echo.class
Compiled from "Echo.scala"
public final class Echo {
public static void main(java.lang.String[]);
}
请注意,Echo类的classfile(不是Echo $,确实有一个public static void main方法。 Scala为在对象中定义的方法生成与Java兼容的静态方法。
Note that the classfile for the Echo class (not Echo$, the object) does indeed have a public static void main method. Scala generates static methods for methods defined in objects for compatibility with Java.
但是,我认为在Scala程序中创建一个主要的方法。使用应用程序特征;它更干净:
However, I consider creating a main method in a Scala program an anachronism. Use the App trait instead; it's cleaner:
object Echo extends App {
args foreach println
}
这篇关于主要方法在Scala的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!