我正在使用案例类在 Scala 中创建许多用于喷射的 json 消息。例如:
case class Foo(name: String, attrs: List[String])
implicit val fooFormat = jsonFormat2(Foo)
object Foo {
case class Invalid(error: String)
}
case class Bar(name: String, kv: Map[String, String])
implicit val barFormat = jsonFormat2(Bar)
在上面的片段中,
barFormat
编译,但 fooFormat
才不是:type mismatch; found : Foo.type required: (?, ?) => ?
Note: implicit value barFormat is not applicable here because it comes
after the application point and it lacks an explicit result type
我不想用
barFormat
代替 fooFormat
,而且我明白一个case类会自动生成一个伴生对象,但是我不明白为什么这里会出现编译器错误,错误信息我很难破译。有谁知道这里的问题是什么以及如何解决它,最好不要删除我的 Foo
伴侣对象?
最佳答案
从你的编译错误来看,它看起来像 jsonFormat2
期望有两个参数的函数。你的意思是传递Foo
的构造函数吗?和 Bar
进去?如果是这样,你应该做 Foo.apply
和 Bar.apply
.
关于scala - 使用 case 类的伴随对象作为类型参数时编译错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24273617/