首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Scala中的Main方法

Scala中的Main方法
EN

Stack Overflow用户
提问于 2014-05-02 05:02:03
回答 2查看 70.2K关注 0票数 38

我编写了一个Scala类,并在其中定义了main()方法。它被编译了,但是当我运行它的时候,我得到了NoSuchMethodError:main。在我看到的所有scala示例中,main方法都是在一个对象中定义的。在Java中,我们在一个类中定义main方法。是否可以在Scala类中定义main(),或者我们是否总是需要一个对象来实现这一点?

EN

回答 2

Stack Overflow用户

发布于 2014-05-02 10:40:57

正如Eugene在评论中所说,Scala中没有静态方法。但看看这个:

代码语言:javascript
复制
$ 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$对象)确实有一个公共的静态void main方法。Scala为对象中定义的方法生成静态方法,以便与Java兼容。

然而,我认为在Scala程序中创建main方法是不合时宜的。改为使用App特征;它更简洁:

代码语言:javascript
复制
object Echo extends App {
  args foreach println
}
票数 19
EN

Stack Overflow用户

发布于 2016-12-09 16:39:41

当我想要在智能idea scala编辑器中测试我的代码时,我只需在我的类下面创建一个伴生对象,并在其中放入一个main方法。就这样。请看示例:

代码语言:javascript
复制
class Colon {
    class Cow {
        def ^ (moon:Moon): Unit ={
        println("Cow jumped over the moon")
        }
    }
    class Moon{
        def ^:(cow:Cow) = println("This cow jumped over moon too")
    }
}
object Colon{
    def main(args: Array[String]): Unit = {
    val c:Colon = new Colon
    val cow = new c.Cow
    val moon = new c.Moon
    cow ^ moon
    cow ^: moon
    moon.^:(cow)
    }
}
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23416536

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档