0

我是 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 中实现。我不明白如何绕过或避免隐式转换。

任何想法,将不胜感激。

4

1 回答 1

0

在 Scala 中扩展abstract class Rwith abstract class Rbis,并在同伴中object Rbis定义您需要的隐式函数(在我们的例子中它们将在函数之前被调用R),然后在 java 中扩展Rbis.

于 2016-12-16T13:19:54.257 回答