尝试同时使用上限和上下文绑定时出现 scalac 异常。甚至允许吗?我在 Scala 2.11.8
考虑这个
import spray.json._
abstract class CrossRefMessage
case class CrossRefResponse[T <: CrossRefMessage](status: String, `message-type`: String, `message-version`: String, message: T)
implicit def CrossRefResponseFormat[T <: CrossRefMessage](implicit reader: JsonFormat[T]) = jsonFormat4(CrossRefResponse.apply[T])
在编译时我得到
Error:scalac: Error: type mismatch;
found : String
required: co.zzzz.server.JournalsManager.CrossRefMessage
scala.reflect.internal.Types$TypeError: type mismatch;
found : String
required: co.zzzz.server.JournalsManager.CrossRefMessage
at scala.tools.nsc.typechecker.Contexts$ThrowingReporter.handleError(Contexts.scala:1402)
at scala.tools.nsc.typechecker.Contexts$ContextReporter.issue(Contexts.scala:1254)
at scala.tools.nsc.typechecker.Contexts$Context.issue(Contexts.scala:573)
at scala.tools.nsc.typechecker.ContextErrors$ErrorUtils$.issueTypeError(ContextErrors.scala:106)
我错过了什么?
更新:对我来说这看起来很神奇,但如果我改变字段的位置,错误就会消失message: T
。如果它位于第 1 位或第 2 位,它会编译。谁能解释为什么?