Возможно ли совпадение шаблона, если что-то есть Numeric? Я хочу сделать следующее:
class DoubleWrapper(value: Double) {
override def equals(o: Any): Boolean = o match {
case o: Numeric => value == o.toDouble
case _ => false
}
override def hashCode(): Int = value ##
}
Но, конечно, это не работает, потому что Numeric не является супертипом таких вещей, как Int и Double, это класс. Я также не могу сделать что-то вроде def equals[N: Numeric](o: N), потому что o должен быть Any, чтобы соответствовать контракту для equals.
Итак, как мне это сделать без перечисления всех известных классов Numeric (включая, я думаю, пользовательские классы, о которых я даже не знаю)?