【发布时间】:2016-01-27 21:29:40
【问题描述】:
我有奇怪的错误信息,我无法用 asInstanceOf[T] 修复它
trait ABase {
type A <: ABase
def compare(that: A): Int
}
case class B [A <: ABase] (someField: A) {
//extends Ordered[B[A]] {
def compare1(that: B [A]): Int = someField.asInstanceOf[A].compare(that.someField.asInstanceOf[A])
/*Error: type mismatch;
found : A
required: _1.A where val _1: A
= someField.asInstanceOf[A].compare(that.someField.asInstanceOf[A])*/
def compare2(that: B [A]): Int = someField.compare(that.someField.asInstanceOf[A])
/*Error: type mismatch;
found : A
required: B.this.someField.A
= someField.compare(that.someField.asInstanceOf[A])*/
def compare3(that: B [A]): Int = someField.compare(that.someField)
/*Error: type mismatch;
found : that.someField.type (with underlying type A)
required: B.this.someField.A
= someField.compare(that.someField)*/
}
错误本身
错误:类型不匹配; 找一个 必需:_1.A 其中 val _1:A
【问题讨论】:
-
SO 问题不应包含要点,而应将代码嵌入问题中。 SO 解析器在这里工作正常;)
-
您将
A与B[A]进行比较,您应该重新提出您的问题并解释您想要达到的目标。 -
不,我不是。错误消息清楚地表明了这一点。说的再清楚不过了……
-
我无法正确格式化我的代码,我在这里没有看到 markdown 或任何 html 编辑器的选项。所以我不断收到来自 SO 解析器的错误
-
@KostyaCallmetofindout 编辑时,有一个名为
code sample的按钮。它看起来像两个花括号 {}。您选择您的代码并按下它。从未如此简单(老实说,我在 SO 两年后才看到它。我之前手动格式化我的代码:))