在 Scala 中使用 Java 库

2022-09-01 14:12:30

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

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

public class HelloWorld {

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

}

从Scala调用它的代码是什么?


答案 1

在你的示例中,你只有一个main,而不是一个你必须从其他地方调用的函数。但是假设您确实有一个这样的功能

package com.example.hello;

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

(为了完整起见,我还为您的示例添加了一个包)。然后在你的Scala代码中,你可以做:

import com.example.hello._

object GreetWorld extends App {
  (0 until 10).foreach {
    HelloWorld.sayHello()
  }
}

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

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


答案 2

等效代码为:

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!

推荐