我正在尝试制作一个通用函数,它CodecProvider
从给定的通用案例类中生成一个。
BSON 宏文档没有给出任何例子。
这个(未回答的)SO问题是相似的,但是我对枚举给定类型参数的所有可能的编解码器不感兴趣。此外,我的问题不涉及类型界限或类型差异。
这是无法编译的代码的最小示例。
import org.mongodb.scala.bson.codecs.Macros
case class Foo(x: Int)
case class Bar[T](x: T)
def fooCodecProvider = Macros.createCodecProvider[Foo]()
// Compiles! (No generic)
def barCodecProvider[T] = Macros.createCodecProvider[Bar[T]]()
// Compile Error:(8, 70) class Bar takes type parameters
我希望barCodecProvider
编译,但它没有。
上面代码抛出的编译错误读起来class Bar takes type parameters
令人困惑,因为我已经通过泛型函数的签名明确提供了T
类型Bar
参数barCodecProvider
。我有与打字相关的语法错误吗?错误是否表明我错误地使用了 mongo-scala-driver?