在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!") }