以下代码无法编译,因为两个乘法运算符在类型擦除后具有相同的类型:
如何让Scala将不同类型的XxxT`类型视为不同类型?
(f: Object)Object
我了解类型擦除,但所有我见过的情况都是泛型类型被擦除了,例如Scala double definition (2 methods have the same type erasure)中回答的List[Int]
或List[String]
。如何让Scala将不同类型的XxxT`类型视为不同类型?
trait AbstractTypes {
type ScalarT
type VectorT
abstract class Operators(u: VectorT) {
def *(f: ScalarT): VectorT
def *(v: VectorT): VectorT
}
}