Scala中的主 – 方法

我写了一个 scala类并定义了main()方法.它编译,但是当我运行它,我得到了NoSuchMethodError:main.在所有scala示例中,我已经看到,主要的方法是在对象中定义的.在 Java中,我们定义了一个类中的main方法.是否可以在scala类中定义main(),或者我们是否总是需要一个对象?

谢谢

解决方法

正如尤金在评论中所说,Scala中没有静态方法.但请注意:

$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类的类文件(不是Echo $,对象)确实有一个public static void main方法. Scala为对象中定义的方法生成与Java兼容的静态方法.

但是,我认为在Scala程序中创建一个主要方法是时代错误.改用App trait;它更清洁:

object Echo extends App {
  args foreach println
}

相关文章

共收录Twitter的14款开源软件,第1页Twitter的Emoji表情 Tw...
Java和Scala中关于==的区别Java:==比较两个变量本身的值,即...
本篇内容主要讲解“Scala怎么使用”,感兴趣的朋友不妨来看看...
这篇文章主要介绍“Scala是一种什么语言”,在日常操作中,相...
这篇文章主要介绍“Scala Trait怎么使用”,在日常操作中,相...
这篇文章主要介绍“Scala类型检查与模式匹配怎么使用”,在日...