在Java中,我通常会这样做:
class Hello {
public Hello() {
System.out.println("hello");
}
public static void main(String args[]) {
new Hello();
}
}
如何在Scala中执行类似的操作?我开始使用Hello作为Scala对象,如下所示:
object Hello {
// constructor goes here
def main(args: Array[String]): Unit = {
println("hello") // new Hello() would go here
}
}
但我无法实例化。如果我改变,我将object关键字更改为class,然后scala编译器就会抱怨,即
class Hello {
println("hello")
def main(args: Array[String]): Unit = {
new Hello()
}
}
我知道我可能在这里走错了路,但我想摆脱苦难。
答案 0 :(得分:2)
通常在Scala中我使用代表应用程序的对象:
object Hello extends App {
println("hello")
}
答案 1 :(得分:1)
我认为您不了解Scala object
是什么。它实际上相当于Java单例,其中创建并实例化了匿名类。
如果您在此方案中将代码重新编译为Java:
object Hello {}
它会得到类似的东西:
public class Hello$ {
public static Hello$ $MODULE = new Hello$()
}
这已经是单身,相当于val
。你甚至可以这样做:
val x = Hello; // x will be of type Hello.type