1

次の 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 cannot be resolved to a variable

簡単な修正はありますか?または、より Java に適したパラメーターを定義するより良い方法はありますか? パラメータをクロージャとして定義する方がよいでしょうか?

ベスト プラクティスや回避策を教えていただければ幸いです。これは、より大きな流暢なインターフェースの一部となることを意図しています。私の重要な基準は、Java と Scala の両方で使用可能でクリーンである必要があるということです。

4

1 に答える 1