Scala 2.10.3 で値クラス (AnyVal を拡張するクラス) をいじっていますが、それらを抽象メソッドのパラメーターとして使用すると、奇妙なコンパイラ エラーが発生します。次の例が示すように:
class ValueClass(val x: Int) extends AnyVal
trait Test {
def foo(v: ValueClass): Int
}
new Test {
override def foo(v: ValueClass): Int = 1
}
コンパイラは次のエラーを吐き出します。
error: bridge generated for member method foo: (v: ValueClass)Int in anonymous class $anon
which overrides method foo: (v: ValueClass)Int in trait Test
clashes with definition of the member itself;
both have erased type (v: Int)Int
override def foo(v: ValueClass): Int = 1
なぜこれが機能しないのですか?値クラスを抽象メソッドに渡す方法はありますか?