在Scala中使用Java库

我是Scala的新手。 到目前为止,我只能编写基本代码,但我想更具体地开始使用它,而不仅仅是学习理论。

假设我在HelloWorld.java中有以下Java代码:

public class HelloWorld { public static void main(String[] args) { System.out.println("Hello, World"); } } 

等效的Scala代码是什么?

在你的例子中,你只有一个main,而不是你必须从其他地方调用的函数。 但是我们说你确实有类似的function

 package com.example.hello; public class HelloWorld { public static void sayHello() { System.out.println("Hello, world!"); } } 

(为了完整性,我还为您的示例添加了一个包)。 然后在Scala代码中,您可以执行以下操作:

 import com.example.hello._ (0 until 10).foreach { HelloWorld.sayHello() } 

在Scala中使用Java函数10次打招呼。 import._ import包的所有成员,或者您可以import com.example.hello.HelloWorld 。 您甚至可以使用import com.example.hello.HelloWorld.sayHello导入方法本身,这样您就不需要在代码中引用HelloWorld对象。

两种语言都编译成JVM字节码,因此从Scala调用Java代码非常简单,尽管如果涉及隐式参数,从Java调用Scala可能会比较棘手。

等效代码是:

 object HelloWorld extends App { println("Hello, world!") } 

如果您将该代码保存在名为HelloWorld.scala的文件中,那么您可以编译并运行它:

 $ scalac HelloWorld.scala $ scala HelloWorld Hello, world! 

或者如果你在REPL工作:

 scala> :paste // Entering paste mode (ctrl-D to finish) object HelloWorld extends App { println("Hello, world!") } // Exiting paste mode, now interpreting. defined module HelloWorld scala> HelloWorld.main(Array.empty[String]) Hello, world! 
 object HelloWorld{ def main(args: Array[String]): Unit = { println("hello world") } } 

要么

 object HelloWorld extends App { println("Hello, world!") }