java - 如何从 Java 调用在 Scala 包对象上定义的方法? (斯卡拉 2.10.x)

标签 java scala scala-java-interop

给定一个在(第 3 方,所以我不能只移动它)Scala 包对象上定义的方法,如下所示:

package foo

package object bar {
  def doSomething(s: String): String = ???
}

我需要从 Java 代码调用 doSomething。我知道一般来说,我可以使用 ScalaObject$.method() 从 Java 获取 Scala 伴随对象的方法。然而,上面的示例编译为 foo.bar.package$.class,当然 Java 尖叫着 package 是一个保留字。

有没有办法直接从 Java 调用它?

最佳答案

我能想出的最好办法(可行,但很丑)是将 doSomething 包装在不在包对象中的 Scala 代码中,然后从我的 Java 代码中调用包装器。

object BarUtil {
  def wrapper(s: String) = foo.bar.doSomething(s)
}

在 Java 中

public String doIt(String s) {
    return BarUtil$.wrapper(s);
}

关于java - 如何从 Java 调用在 Scala 包对象上定义的方法? (斯卡拉 2.10.x),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33114910/

相关文章:

java - Scala 和 Java 的构建器库

Scala 解决 Comparator.thenComparing 中的错误覆盖

java - 如何从 Java 使用 Spark 的 .newAPIHadoopRDD()

java - 按时间间隔测试代码

java - Tomcat 期望从页面返回响应是否有最大时间限制?

scala - Spark : Flatten simple multi-column DataFrame

scala - 限制 Play 2.1 框架中的线程数

scala - 如何编译Scala Hello World应用程序

java - Wildfly 8.0.0.Final - 定时器服务集群支持

java - 在 Java 中使用自定义盐进行 Blowfish 加密