1

上限とコンテキスト バウンドを同時に使用しようとすると、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 番目の位置にある場合はコンパイルされます。誰でも理由を説明できますか?

4

0 に答える 0