java - 在 Scala 中使用 Java 库

标签 java scala scala-java-interop

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

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

public class HelloWorld {

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

}

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

最佳答案

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

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 次。 import 中的 ._ 导入包的所有成员,或者您也可以只 import com.example.hello.HelloWorld。您甚至可以使用 import com.example.hello.HelloWorld.sayHello 导入方法本身,这样您就无需在代码中引用 HelloWorld 对象。

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

关于java - 在 Scala 中使用 Java 库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15507101/

相关文章:

scala - Play & Akka 和用于数据库访问的阻塞线程

java - swt中的文本大纲

java - 如何使用java从.csv文件中获取最后两条记录?

scala - 如何使用 Lagom Kafka Message Broker API 安全地跳过消息?

java - 将 "String*"(Scala) 转换为/自 "String..."(Java)

java - 我如何从 Java 反射性地获取 Scala 对象的字段?

java - .java 和 .scala 类之间是否存在循环依赖?

java - Admob 横幅广告未显示在 Android 应用程序上

java - 如何不将重复项添加到数组列表中

scala - REPL 中类型别名和单例对象之间的冲突