【发布时间】:2014-07-01 22:15:49
【问题描述】:
如果我想避免isInstanceOf & asInstanceOf 组合,而是想使用模式匹配,有没有任何简单 方法来避免以下示例中的擦除问题?我研究了一些答案,但它们似乎都使用 Manifest,生成的代码看起来比不受欢迎的 isInstanceOf & asInstanceOf 组合更复杂。
trait Comparable[A] extends Ordered[A] {
override def equals(that : Any) =
that match {
case that : A => compare(that) == 0
case _ => false
}
}
我在上面的代码中的目标是创建一个特征,将 == 和 != 的实现添加到有序比较器中。但是,由于 A 被删除,我收到以下错误:
warning: abstract type pattern A is unchecked since it is eliminated by erasure
case that : A => compare(that) == 0
注意:关于这个问题,StackOverflow 上还有其他类似的问题,但接受的答案似乎使用 Manifest,因此我的问题是 - 这可以通过更简单的方式实现吗?
【问题讨论】:
标签: scala generics pattern-matching