java - 针对 Java 兼容性的 Scala API 设计

标签 java api scala

假设我有以下 Scala API,我计划从 Scala 和 Java 调用它:

sealed abstract class InterpMethod
case object InterpLinear extends InterpMethod
case object InterpNearest extends InterpMethod
case object InterpSpline extends InterpMethod

class Interpolator {
  def interp(method: InterpMethod) = method match {
    case InterpLinear => { ... }
    case InterpNearest => { ... }
    case InterpSpline => { ... }
  }
}

object Interpolator { def apply() = new Interpolator }

// Scala Usage:
import myPackage._
Interpolator.interp(InterpNearest)

// Java Usage:
import myPackage.*
Interpolator myInterp = new Interpolator()
myInterp.interp(InterpNearest)

在 Scala 中运行良好。 Java抛出编译错误:InterpNearest无法解析为变量

有简单的解决方法吗?或者是一种对 Java 更友好的定义参数的更好方法?将参数定义为闭包会更好吗?

任何最佳实践或解决方法将不胜感激。这是一个更大的 fluent interface 的一部分。 。我的关键标准是它需要在 Java 和 Scala 中可用且干净。

最佳答案

http://lampwww.epfl.ch/~michelou/scala/using-scala-from-java.html说你可以像这样调用对象:

IterpNearest$.MODULE$

这不太好。我想你应该采纳@millimoose 的建议。

关于java - 针对 Java 兼容性的 Scala API 设计,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16339880/

相关文章:

Java Logger 不向控制台打印任何内容

c# - VueJs/Axios - 如何通过 API 调用在浏览器中下载 pdf 文件

scala - 为什么 Spark Streaming 应用程序使用 sbt run 可以正常工作,但不能在 Tomcat(作为 Web 应用程序)上运行?

java - 错误: please define the main method as: public static void main(String[] args)

java - 从android中的服务器下载数据时出现Outofbound内存异常

java - 如何在 CompletableFuture 中保留 slf4j MDC 日志上下文?

scala - 可以重命名基类中的 Scala 方法吗?

angularjs - Angular API 对象

php - Google Analytics 数据导出 API V3

java - 如何限制使用 Scala 显示的字符串中的字符数