Я пытаюсь создать обобщенную функцию, которая выдает CodecProvider
из заданного универсального класса case.
В документации макроса 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?