而不是每个案例类有一个硬编码行
val codecRegistry = fromRegistries(
fromProviders(
classOf[CaseClassNameGoesHere],
...
),
...
)
我想创建一个可以创建它们的方法。
两个
def method[T] = {
Macros.createCodecProvider[T]()
}
和
def method[T: ClassTag] = {
Macros.createCodecProvider[T]()
}
...给我scala.ScalaReflectionException:类型T不是类
我希望编译器可以查看此方法的每次调用并执行其操作。
有没有办法实现这个目标?解决方案"遥远的"只要我不必创建classOf
的列表,就可以接受这种方法。
答案 0 :(得分:0)
你最终会得到更多的代码,更复杂的代码,不是吗?当您将classOf[Foo]
传递给fromProviders
时,实际上只有一个隐含的createCodecProvider
需要Class[Foo]
并为其创建CodecProvider
。无论您如何生成它们,您仍然必须“手动”将所有编解码器提供程序传递到fromProviders
。即你仍然会得到类似的东西:
val codecRegistry = fromRegistries(
fromProviders(
method[Foo],
method[Bar],
...
)