我是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类来获取任何功能。
RFunction中存在的方法也在我的扩展类A中实现。我不明白如何绕过或避免隐式转换。
任何想法都会受到赞赏。
答案 0 :(得分:0)
在Scala中使用abstract class R
扩展abstract class Rbis
,并在随附的object Rbis
中定义您需要的隐式函数(在我们的案例中,它们将在R
之前调用它们) ,然后在java中扩展Rbis
。