ScalaC异常尝试同时使用上限和上下文绑定

时间:2016-05-28 15:06:46

标签: scala generics context-bound

我尝试同时使用上限和上下文绑定时出现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的位置,则错误会消失。如果它在第一或第二位置,它编译。任何人都可以解释原因吗?

0 个答案:

没有答案