我是 Scala 和隐式转换的新手。
我正在使用我无法控制的现有 scala 库。让我们考虑图书馆中的 R 类。
abstract class R {
}
object R {
implicit def RFunctions[K, V](r: R[(K, V)]) (implicit kt: ClassTag[K],vt: ClassTag[V], ord: Ordering[K] = null): RFunctions[K, V] = { new RFunctions(r) }
}
我正在扩展 R 类以覆盖它的几乎所有行为。但是这个新类是一个Java 类。我们称它为 A。
class A extends R {
}
问题是,在我的控制流中的某个时刻,控件跳转到 R 的隐式声明并最终使用 RFunctions 类来实现任何功能。
RFunctions 中存在的方法也在我的扩展类 A 中实现。我不明白如何绕过或避免隐式转换。
任何想法,将不胜感激。