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 Rabstract class Rbis、コンパニオンでobject Rbis必要な暗黙の関数を定義します (Rこの場合、これらの関数は 内の関数の前に呼び出されます)。次に、Java で を拡張しRbisます。

于 2016-12-16T13:19:54.257 に答える