假設我有以下Scala的API,這是我打算從Scala和Java調用:斯卡拉API設計的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)
在斯卡拉的偉大工程。 Java拋出編譯錯誤:InterpNearest cannot be resolved to a variable
有沒有簡單的解決方法?或者更好的定義更友好的Java參數的方法?將參數定義爲閉包會更好嗎?
任何最佳實踐或解決方法,將不勝感激。這旨在成爲較大的fluent interface的一部分。我的關鍵標準是它需要在Java和Scala中可用並且乾淨。
也許給我們一個如何在Java中使用它的例子? – mepcotterell 2013-05-02 13:56:22
設計一個乾淨的Java接口,用Scala實現它,然後添加Scala風格的擴展 – millimoose 2013-05-02 14:06:25