次の 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 の両方で使用可能でクリーンである必要があるということです。