Java поддерживает полиморфные методы, так что примерно так:
object original {
def needNumeric[T](value: T)(implicit n: Numeric[T]) = {
// do something
}
}
object NeedNumeric {
def needNumeric(value: Int) = original.needNumeric(value)
def needNumeric(value: Long) = original.needNumeric(value)
def needNumeric(value: Float) = original.needNumeric(value)
def needNumeric(value: Double) = original.needNumeric(value)
def needNumeric(value: BigInt) = original.needNumeric(value)
...
}
import NeedNumeric._
Утомительно перечислять типы (именно поэтому Scala использует класс типов), но это должно быть в порядке длячисловые значения, так как числовых типов не очень много.
Если это ваш собственный метод needNumeric
, обратите внимание, что подпись может быть упрощена до этого:
def needNumeric[T: Numeric](value: T) = {